Java物件導向繼承時出現的奇怪現象?

時間 2021-06-02 05:55:56

1樓:infinite gao

1. Zi 類沒有override Fu 類,因此呼叫的Fu 類show()方法

2. Fu 類show()方法中第乙個println引數為物件,屬於執行時繫結,第二個println引數為Fu 類欄位,屬於編譯時繫結

2樓:ccloomi

Zi類並沒有Override父類的show方法,所以你在main中呼叫show方法實際是呼叫的父類的方法,你可以在Zi類中寫乙個show方法覆蓋父類的方法,再執行一下就是你期望的結果了。

3樓:麥洛

我記得老師講的時候是這樣說:建立子類物件,在堆中開闢空間,會將一部分分給父類,用於存放非靜態成員產量,由於父類中定義了name

,列印時先去父類找,沒有才回去子類

4樓:懸壺醉世

這個問題出現在載入上,載入乙個類的時候會無限次遞迴呼叫父類物件進行載入,然後載入到子類以保證子類可以覆蓋父類的方法與屬性。。。。

也就是說

載入class檔案後並且建立物件空間之後會:子類→追蹤父類→父類賦值與普通方法→子類覆蓋父類賦值與普通方法→遞迴呼叫父類

這個過程中關鍵點在於物件的值還是父類的值的時候構建了普通方法,但是在子類的時候並未覆蓋該方法。。。所以造成了父類方法呼叫父類引數的情況~~~~~子類沒覆蓋父類

這裡有個疑問是既然子類重新賦值了為什麼父類呼叫的還是父類的heihei;

原因可能有兩個第乙個

載入過程中自動把物件寫入方法區,方法在建立的過程中已經確定了輸出的值

建議你增加乙個孫類,寫show1跟show2兩個方法子類重寫show2,孫類不重寫看看輸出的話是show1輸出的是父類 show2因為被子類重寫所以子類屬性覆蓋呼叫子類引數

大概如下:

class fu

void show2()

}class Sun extends zi

怎麼理解JAVA的物件導向?

hk12345 我認為物件就是一樣東西嗎,比如一塊石頭,乙個手機等等,那麼我們可以使用屬性和方法來說明這個東西的特點。比如石頭的材質,大小,堅硬程度。手機的型號,解析度,當前電量等等 AboBack 物件導向,就是來使用這個物件的屬性方法來做事情!比如你去吃飯,直接對廚師說我要吃某某炒菜就行,具體的...

Java的程式設計思想 物件導向,物件到底是什麼?

啊強啊 這個,可以這樣理解 你現在餓了,想要吃飯,面向過程的角度就是你自己去生火做飯炒菜 然後在物件導向的角度就是你拿出手機叫了乙個外賣,意思就是把做飯的整個過程交給了其他的物件去處理,你只需要去呼叫做飯這個方法就能夠幫你把飯做好了返回給你 類是對現實世界的抽象,物件是對類的例項化!如何理解類 就拿...

繼承對物件導向來說是必要的嗎

趙者也 深入學習js時,前面一部分特別欣賞,直到看到為了繼承搞出原形系統,一下子變得無比囉嗦。仔細想一想,似乎繼承才是oop囉嗦的根源。又一想,去掉了原型鏈,js不就成lua了?lua是世界上最好的語言。 Vance大飛 繼承是繼承,面相物件是面相物件,物件導向更多的是一種變成思想,繼承更多的是一種...