/**
* 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");
}
}
运行结果:
test A
I am TestB
解释:obj是个TestA的实例,TestB继承TestA,向上转型是安全的。因为子类有重写父类的方法,因此调用子类的方法,如果没有,则调用父类的方法。