多型性和instanceof關鍵字的使用
阿新 • • 發佈:2021-09-06
man和woman類都要是person類的子類,然後對person類的方法要進行重寫,這是多型性的條件,然後
此時這個物件只能呼叫重寫父類的方法------------->虛擬方法呼叫
輸出的結果是子類重寫方法執行的結果,即編譯看左邊,執行看右邊。
編譯時看左邊父類的哪些方法在子類重寫過,而執行時結果看子類重寫的方法。這個叫做虛擬方法呼叫
進入的是person的eat、walk方法體內,因為是person類體現的多型性,方法就是體現多型性的一個途徑。
明確:子類可以獲取父類的私有屬性和方法,因為像屬性的話,在父類中設定get和set方法,然後就可以呼叫get和set方法修改屬性和呼叫屬性。
將父類的私有方法放在一個公有方法裡面,就可以通過呼叫共有方法來間接呼叫私有方法
這些私有的屬性和方法都是子類物件載入父類來的,即每個子類物件在堆結構中都有父類的屬性和方法,不管是共有的還是私有的,這樣就體現了繼承性
同時,屬性是不能體現多型性的,所以,父類和子類定義了同一個屬性時,呼叫
即子類定義了與父類同名的的屬性,這個屬性不會覆蓋父類的同名屬性,即編譯執行都看左邊
呼叫時不能呼叫子類特有的屬性和方法,但是要明確一點,宣告物件的時候,子類的那些屬性都被載入進來了,只不過因為宣告的person類的型別,導致那些子類特有屬性和方法都被遮蔽了。但是在堆記憶體都有的