JAVA 繼承需要注意的細節

2021-06-07 20:20:53 字數 878 閱讀 1363

1:子類的構造過程中 必須 呼叫基類的構造方法

原因:可以這樣理解,每個子類都有 super 屬性 而該屬性指向的是父類物件

在例項化子類物件時 子類的構造方法會預設的去呼叫一次父類的構造方法 目的是為了生成乙個父類物件 並讓 super 指向該物件

這種說法只是我自己理解的,雖然不清楚是為什麼,但至少這樣理解 能明確的知道 super 就是父類的引用

2:子類可以在自己的構造方法中使用 super() 呼叫基類的構造方法

這裡只需要注意一點:在子類的構造方法中用 super() 呼叫基類的構造方法時 必須要寫在子類構造構造方法的第一行

3:如果子類的構造方法中共沒有顯示的呼叫父類構造方法,則系統預設呼叫父類無引數的構造方法

4:子類構造方法中沒有呼叫父類構造方法,同時父類中存在乙個有引數的構造方法 而從未定義無引數的構造方法 此時編譯出錯

原因:這個問題在 父類中沒有任何構造方法時 則編譯是通過的,但是一旦有了帶引數的構造方法時就會出錯,因為如果子類中

沒有特意去呼叫 父類的構造方法時 (當前父類中是有2個構造方法,乙個是無引數的 另乙個是帶引數的 使用者自己定義的構造方法)

按照第三條的說法 會預設的去呼叫無引數的構造方法,但是因為當前父類中有2個構造方法 而子類沒有呼叫父類的構造方法

系統就不知道 應該要呼叫那個構造方法了,因此編譯時會出錯。

但是第四條的說法其實 也說不過去,第三條已經說過 子類沒有呼叫父類的構造方法時 系統會預設呼叫父類的無引數構造方法(說明呼叫構造方法時

不會給父類構造方法傳遞任何引數) 那麼既然如此,就算父類中存在有引數的構造方法 而子類沒有呼叫父類的構造方法時 他應該也要預設去呼叫

父類中無引數的構造方法才對。

但是事實是 如果出現 第四條編譯就會出錯,所以以後自己多注意即可!

程式設計中需要注意的細節

雖然,這些使用方法看似差別不大,在現在的cpu執行期起來幾乎上可以忽略不計,但是,我們想一下現在軟體,每乙個都是那麼的龐大,乙個小專案都是幾萬行 乙個函式中你消耗一點,那麼多函式是很大的效能消耗的。舉乙個不恰當的例子,下面的例子是我在虛擬機器中執行,其中也會有機器效能不好的原因,但是我覺得這樣才會將...

java需要注意的地方2

1.abstract class name 大俠們,這有何錯誤?答案 錯。abstract method必須以分號結尾,且不帶花括號。2.public class something 有錯嗎?答案 錯。區域性變數前不能放置任何訪問修飾符 private,public,和protected final...

使用繼承需要注意事項

使用繼承注意兩點 第一 子類無法繼承private 修飾的屬性和方法 第二 子類無法繼承父類的構造方法 子類除了繼承父類的屬性和方法之外,還可以有自己的屬性,但是呼叫從父類繼承的方法卻不能獲取,比如 public class personneldept extends department 子類研發...