java中子類覆蓋父類變量和方法的問題


public class Avf {

    public static void main(String[] args) {
        A a = new B();
        System.out.println(a.str);
        a.get();
    }

}

class A{
    String str = "abc";
    public void get(){
        System.out.println("A");
    }
}

class B extends A{
    String str = "def";
    public void get(){
        System.out.println("B");
    }
}

代碼中我們讓B繼承了A,並且B中和A中一樣有相同變量str和get方法

然后我們執行:

A a = new B();
System.out.println(a.str);
a.get();

最終輸出:

 

abc
B

可以看出,我們用一個A類型的變量指向B類型的實例時,如果調用變量,則會根據變量的類型來決定是調用父類還是子類里的變量,而子類同名方法會覆蓋父類同名方法,所以輸出的是B。

 


免責聲明!

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



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