日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

《java编程思想》学习笔记——复用类

發布時間:2025/6/15 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《java编程思想》学习笔记——复用类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1、復用類的兩種方法

(1)只需在新的類中產生現有類的對象。由于新的類是由現有類的對象所組成,所以這種方法稱為組合。該方法只是復用了現有程序代碼的功能,而非它的形式。

(2)第二種方法則更細致一些,它按照現有類的類型來創建新類。無需改變現有類的形式,采用現有類的形式并在其中添加新代碼。

7.1組合語法

1、組合技術:只需將對象引用置于新類中即可。對于非基本類型的對象,必須將其引用置于新的類中,但可以直接定義基本類型數據。

2、每一個非基本類型的對象都有一個toString()方法,而且當編譯器需要一個String而你只有一個對象時,該方法便會被調用,可以重寫toString()。

3、如果想初始化引用,可以在代碼中的下列位置進行

(1)在定義對象的地方。這意味著它們總是能在構造被調用之前被初始化。

(2)在類的構造器中。

(3)就在正要使用這些對象之前,這種方式為惰性初始化。

(4)使用實例化初始化。

7.2繼承語法

1、除非已明確指出要從其他類中繼承,否則就是隱式地從java的標準根類Object進行繼承。

2、即使是一個程序中含有多個類,也只有命令行所調用的那個類的mian()方法會被調用。即使不是public類,也可以執行里面的面方法。

3、為了繼承,一般的規則是將所有的數據成員都指定為private,將所有的方法指定為public。

4、在子類的方法中,不能直接調用基類繼承而來的方法,因為這樣做會產生遞歸,為解決此問題,java用super關鍵字表示超類的意思,當前類就是從超類繼承來得。

7.2.1初始化基類

1、當創建一個到處類的對象時,該對象包含了一個基類的子對象。這個子對象與你用基類直接創建的對象是一樣的。二者的區別在于,后者來自外部,而基類的子對象被包裝在導出類對象內部。

2、對基類子對象初始化:在構造器中調用基類構造器來執行初始化,而基類構造器具有執行基類初始化所需要的所有知識和能力。java會自動在到處類的構造器中插入基類構造器的調用。

3、構建過程是從基類“向外”擴散的,所以基類再導出類構造器可以訪問它之前,就已經完成了初始化。

4、如果沒有默認的基類構造器,或者想調用一個帶參數的基類構造器,就必須用關鍵字super顯示地編寫調用基類構造器的語句,并且配以適當的參數列表。

5抵用基類構造器必須是你在導出類構造器中要做的第一件事。

7.3代理

1、這是繼承和組合之間的中庸之道,因為我們將一個成員對象置于所要構造的類中(就像組合),但與此同時我們在心累中暴露了該成員對象的所有方法(就像繼承)

2、我們使用代理擁有更多的控制力,因為我們可以選擇只提供在成員對象中的方法的某個子集。

7.4結合使用組合和繼承

1、雖然編譯器強制你去初始化基類,并且要求你在構造器起始處就要這么做,但是它并不監督你必須將成員對象也初始化,因此在這一點上必須時刻注意。

7.4.1確保正確清理

1、執行類的所有特定的清理動作,其順序同生成順序想法

7.4.2名稱屏蔽

1、當想要覆寫某個方法時,可以選擇加@Override注解,在你不留心重載而并非覆寫了該方法時,編譯器就會生成一條錯誤信息。

7.5在組合和繼承之間選擇

1、組合技術通常用于想在新類中使用現有類的功能而非它的接口這種情形。

2、在繼承的時候,使用現有類。這意味著你再使用一個通用類,并為了某種特殊需要而將其特殊化。

7.6protected關鍵字

1、監管可以創建protected域,但是最好的方式還是將域保持為private,你應當一直保留“更改底層實現”的權利然后通過protected方法來控制類的繼承者的訪問權限。

7.7向上轉型

7.7.1為什么稱為向上轉型

1、導出類是基類的一個超集。它可能比基類含有更多的方法,但他必須至少具備基類中所含有的方法。

7.7.2再論組合與集成

1、如果必須向上轉型,則繼承是必要的。

7.8final關鍵字

7.8.1final數據

1、有時數據的恒定不變是很有用的

(1)一個永不改變的編譯時常量

(2)一個在運行時被初始化的值,而你不希望它被改變

2、一個既是static又是final域只占據一段不能改變的存儲空間(編譯期常量)。

3、對于基本類型,final使數值恒定不變,而用于對象引用,final使引用恒定不變。

4、既是static又是final的域,將用大寫表示,并使用下劃線分割各個單詞。

5、不能因為某數據是final的就認為在編譯時可以知道它的值。因為它可以在運行時再賦值。

6、將final數值定義為靜態和非靜態的區別:此區別只有當數值在運行時內被初始化才顯現,這是因為編譯器對編譯時數值一視同仁。

7、final參數:指明為final的參數,可以讀參數,單不能修改參數。

7.8.2final方法

1、使用原因

(1)把方法鎖定,以防任何繼承類修改它的含義。

(2)過去建議使用final方法是因為效率(現在不存在了)

2、當基類的某方法為private時,再寫一個同名方法,此時并沒有覆蓋該方法,僅是生成了一個新的方法。

7.8.3final類

1、由于final類禁止繼承,所以final類中的所有的方法都隱式指定為final。

7.9初始化及類的加載

1、加載順序:先基類的static,再子類的static。

2、創建順序:先子類的構造器,再基類的構造器。

轉載于:https://my.oschina.net/u/2427561/blog/1558982

總結

以上是生活随笔為你收集整理的《java编程思想》学习笔记——复用类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。