1. 程式人生 > >關於子類繼承父類後呼叫方法的問題

關於子類繼承父類後呼叫方法的問題

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class ParentClass { public String msg = "I am a attribute in ParentClass."; public String getMsg() { return msg; } } class ChildrenClass extends ParentClass { public String msg = "I am a attribute in ChildrenClass."
; } public class TestClass { public static void main(String[] args) { ParentClass p = new ParentClass(); ChildrenClass c = new ChildrenClass(); System.out.println(p.getMsg()); System.out.println(""); System.out.println(c.getMsg());//沒有重寫,還是呼叫父類中的方法。 } }

輸出結果是:

I am a attribute in ParentClass.

I am a attribute in ParentClass.

在子類沒有重寫父類中的方法時,呼叫的是父類中的方法,在呼叫方法時,總是先去找有沒有子類擴充套件的方法,如果沒有就去父類中找,這裡子類並沒有擴充套件父類的方法。

自己重寫了就呼叫自己的,自己沒重寫就呼叫父類的。

2,動態繫結

當建立子類的物件的時候(new 子類())  在左邊給的是父類的引用,即 父類  引用名 = new 子類()

系統動態綁定了引用的實際型別。