多態分析

/**
 * 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,向上轉型是安全的。由於子類有重寫父類的方法,所以調用子類的方法,若是沒有,則調用父類的方法。安全

相關文章
相關標籤/搜索