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。
