實驗03部落格園總結
阿新 • • 發佈:2018-11-08
1.為什麼子類的構造方法在執行之前,必須呼叫父類的構造方法?能不能反過來?為什麼不能反過來?
建構函式(constructor)是一種特殊的方法 。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中 。
一個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們即建構函式的過載。建構函式的功能主要用於在類的物件建立時定義初
始化的狀態。
構造一個物件,先呼叫其構造方法,來初始化其成員函式和成員變數。
子類擁有父的成員變數和成員方法,如果不呼叫,則從父類繼承而來的成員變數和成員方法得不到正確的初始化。
不能反過來呼叫也是這個原因,因為父類根本不知道子類有神魔變數而且這樣一來子類也得不到初始化的父類變數,導致程式執行出錯!
2.當多個類實現同一介面(或派生自同一抽象類)時,針對這些類所建立的物件呼叫介面所定義的方法時,會分別呼叫相應的類的具體實現程式碼。
3.
如果子類與父類有相同的欄位,則子類中的欄位會代替或隱藏父類的欄位,子類方法中訪問的是子類中的欄位(而不是父類中的欄位)。如果子類方法確實想訪問父類中被隱藏的同名欄位,可以用super關鍵字來訪問它。如果子類被當作父類使用,則通過子類訪問的欄位是父類的。
當子類與父類擁有一樣的方法,並且讓一個父類變數引用一個子類物件時,物件是子型別的,它就呼叫子型別的方法,是父型別的,它就呼叫父型別的方法。