Java編程思想:第7章 複用類 Java final 關鍵字 & 參數傳遞特色 Java 類加載、調用構造器、執行方法的過程

複用代碼是Java衆多引人注目的功能之一。但僅僅能複製代碼並對之加以改變是不夠的,還須要作更多的事情。html

複用代碼的兩種形式:ide

1.組合,新類中產生現有類對象post

2.繼承,用現有類型建立新類型url

7.1組合語法spa

7.2繼承語法代理

7.2.1初始化基類htm

當建立了一個導出類的對象時,該對象包含了一個基類的子對象。這個子對象與你用基類直接建立的對象是同樣的(Java會自動在導出類構造器裏插入對基類構造器的調用,基類只含帶參構造須要本身用super調用,不可省略),兩者區別在於繼承時基類的子對象包裝在導出類對象內部,而直接建立來與外部。對象

7.3代理blog

代理:第三種關係,Java沒有對它的直接支持,繼承和組合之間中庸之道。繼承

實現代理:把一個成員對象放在代理類中(就像組合),同時在新類中暴露了這個對象的全部方法(就像繼承)。

7.4結合使用組合和繼承

7.4.1確保正確清理

除了內存以外,不能依賴垃圾回收器去作任何事。若是須要清理,最好是編寫本身的清理方法(子類清理方法和父類清理方法調用順序按照建立反序來執行),在該對象使用結束以後,用finally{}子句調用清理方法,不要使用finalize()。

7.4.2名稱屏蔽

子類能夠對基類方法進行覆蓋,重載。利用@override註解能夠防止在想覆蓋時意外寫成了重載

7.5在組合與基礎之間選擇

繼承:is-a

組合:has-a

7.6protected關鍵字

 提供子類和同包的訪問權限

7.7向上轉型

爲新類型提供方法,並非繼承技術中最重要的方面,最重要的是新類和基類之間的關係,這種關係能夠用」新類是現有類的一種類型「來表示。

7.7.1爲何稱爲向上轉型

7.7.2再論如何選擇組合與繼承

問一問本身是否須要重新類向基類轉型,須要用繼承,不然儘量不要用

7.8final關鍵字

參照 Java final 關鍵字 & 參數傳遞特色

7.9初始化及類的加載

Java中類的加載在初次使用時發生,一般是建立對象或者訪問static方法(構造器也算是static方法,只是隱式的)。

7.9.1繼承與初始化

 參照 Java 類加載、調用構造器、執行方法的過程

7.10總結

組合和繼承均可以產生新類型。組合通常是把現有類型做爲新類型實現的一部分加以複用,而繼承是複用已有類型的接口。

相關文章
相關標籤/搜索