Java 多態 虛方法


Java中多態的實現方式:接口實現,繼承父類進行方法重寫,同一個類中進行方法重載。

看代碼:

package com.company;

public class Main {

    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new B();
        B b = new B();
        C c = new C();
        D d = new D();
        System.out.println(a1.show(b));
        System.out.println(a1.show(c));
        System.out.println(a1.show(d));
        System.out.println(a2.show(b));
        System.out.println(a2.show(c));
        System.out.println(a2.show(d));
        System.out.println(b.show(b));
        System.out.println(b.show(c));
        System.out.println(b.show(d));
    }


}

class A {
    public String show(D obj) {
        return ("A and D");
    }

    public String show(A obj) {
        return ("A and A");
    }
}

class B extends A {
    public String show(B obj) {
        return ("B and B");
    }

    public String show(A obj) {
        return ("B and A");
    }
}

class C extends B {
}

class D extends B {
}

第一遍看的時候,第四,第五個看不懂

A a2=new B()

棧中的引用變量是A,堆中的實例變量是B。

將子類的實例,賦值給父類的引用。就是向上轉型。

向上轉型,在運行時,會遺忘子類對象中與父類對象中不同的方法。也會覆蓋與父類中相同的方法--重寫。 

所以a2,可以調用的方法就是,A中有的,但是B中沒有的方法,和B中的重寫A的方法。

=============================================================================================

 

http://www.cnblogs.com/jack204/archive/2012/10/29/2745150.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM