類的復用

1.java代碼的復用方式

  1. 繼承
    • 初始化基類
      導出類對象包含一個基類的子對象,因此導出類初始化之前,編譯器首先調用基類的構造器對基類進行初始化。如果基類構造函數帶參數,那么導出類的構造函數中需要顯示的利用super關鍵字調用基類構造器(因為需要顯示的給出傳入的參數列表)。
  2. 組合
    新類中包含現已存在的類的引用。那么,若要初始化這些對象可以通過三種方式:第一,在類定義對象的地方,使用new關鍵字直接初始化。這意味在構造器調用之前被初始化;第二,在構造器中初始化;第三,在要使用該對象之前。

2.代理

既暴露基類的方法,又在導出類中包含基類的引用。

3.組合與繼承之間的選擇

組合用于想在新類中使用現有類的功能而非現有類的接口,即在現有類中嵌入某個對象,讓新類實現實現所需要的功能,但新類用戶看到的只是新類所定義的接口,而非嵌入對象的接口。因此,為實現此結果,需要在新類中嵌入一個private的現有類對象。
但也有另一種情況,允許新類的用戶訪問現有類對象,這種情況下,只要現有類隱藏了自身的具體實現,那么這種做法就是安全的。使現有成員稱為public有助于用戶了解如何使用新類。

4.protected

就類用戶而言,它是private;然而,對于繼承與此類的導出類或者位于同一個包內的類來說,它是可以訪問的(protected提供了包內訪問權限)。

5.向上轉型

新類是現有類的一種類型。由于導出類確保基類中所有的方法在導出類同樣有效,所以向基類中發送的消息同樣可以向導出類發送。
在向上轉型的過程中,類接口唯一可能發生的事情是丟失方法

6.final

編譯常量:這種情況有兩點要求,第一,必須是基本類型,第二,定義時必須初始化。
運行常量:在運行時被初始化,且不能被改變。
當對對象的引用使用final時,表示引用恒定不變,引用本身不可變,被引用的對象是可變的。
final方法:private方法默認帶final修飾。且final修飾的方法不允許被覆蓋。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • static可以看成全局變量,不可以作為局部變量的修飾詞,它不是權限訪問修飾詞public是權限訪問的修飾詞。對于...
    zq_mo閱讀 243評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,759評論 18 399
  • 1、.java源文件: 一個以”.java“為后綴的源文件:只能有一個與文件名相同的類,可以包含其他類。 2、類方...
    Hughman閱讀 1,504評論 1 9
  • 第一章 對象導論 對象具有狀態、行為和標識。這意味著每一個對象都可以擁有內部數據和方法,并且每一個對象都可以唯一地...
    niaoge2016閱讀 845評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,886評論 18 139