/** * 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,向上转型是安全的。由于子类有重写父类的方法,所以调用子类的方法,若是没有,则调用父类的方法。安全