復用類的兩種方式:
組合:在新類中包含現有類。
繼承:新類繼承自現有類。
初始化基類
class
father
}class
sonextends
father
}public
class
demo
}/*output:
father
son*/
子類物件生成時會建立基類物件幷包含在子類物件中。
如果基類沒有不含參的構造方法則在子類構造方法的第一行用super關鍵字呼叫父類構造方法。
子類物件繼承自父類物件,希望訪問父類的成員及方法,那麼建立父類的物件是最好的選擇。子類物件不可能憑空產生,需要父類物件先生成,先有父才有子。
**在新類中包含現有類物件,並且保留現有類的方法(重新封裝)。
如何在組合和繼承中選擇
組合:在新類中希望借助現有類的功能來完成新類的功能。(has-a)
繼承:希望開發出新類的乙個特殊版本,拓展其功能。(is-a)
向上轉型
將子類轉型為其父類或祖類。乙個方法的引數可以接受該引數對應類的子類。
final關鍵字
final常量:一般為基本型別,一旦賦值,其值不可改變。
final引用:該引用只能指向初始化時的物件,不能再指向其他物件。
final引數:在該方法中,無法修改該引數引用指向的物件。
final方法:該方法無法被重寫。
final類:不可被繼承。
繼承與初始化
當當前類被載入時,若當前類繼承自某個父類,則載入其父類。
初始化順序:靜態變數/靜態**塊 - 匿名**塊 - 成員變數
第七章 復用類
1 子類可以使用父類public protected的方法和成員。子類可以過載父類的方法,但是方法名和引數列表相同,當返回型別不同的方法在子類中會出現編譯期錯誤。由8.4節中允許 犯規協變返回型別,即子型別。2 基類中private可視為基類的結構,對外無任何影響,所以在子類中出現乙個方法名和引數列...
第七章 復用類
class cleaner public cleaner private string s cleaner s a public void dilute public void scrub public string tostring public static void main string a...
第七章 復用類
有乙個類a,aa繼承a,類繼承圖將父類放在最頂部,子類放在下方,a a new aa 此處aa自動向上轉成了a型別。根據類繼承圖可以進行理解向上的這個關係。修飾類 表示該類不能被繼承 修飾方法 表示方法不能被重寫 修飾變數 表示變數只能一次賦值以後值不能被修改 常量 final和static fin...