/** * Created by liang on 2018/5/14. */ public class TestDemo { public static void main(String[] args) { TestA obj = new TestB(); runTest(obj); } public static void runTest(TestA a) { System.out.println("test A"); a.testObj(); } public static void runTest(TestB b) { System.out.println("test B"); b.testObj(); } } class TestA { public void testObj(){ System.out.println("I am TestA"); } } class TestB extends TestA{ public void testObj(){ System.out.println("I am TestB"); } }
運行結果:java
test A I am TestB
解釋:obj是個TestA的實例,TestB繼承TestA,向上轉型是安全的。由於子類有重寫父類的方法,所以調用子類的方法,若是沒有,則調用父類的方法。安全