多态分析

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

相关文章
相关标签/搜索