国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Thinking in JAVA筆記——第七章 復用類

2019-11-15 00:13:01
字體:
來源:轉載
供稿:網友
Thinking in java筆記——第七章 復用類

復用:使用類而不破壞現有代碼

1.組合:新類中使用現有類對象 has-a

2.繼承:按照現有類創(chuàng)建新的類 is-a

7.1 組合語法

直接在類內定義一個對象即可。

*toString:每個類都有toString,編譯器如果在需要String的地方遇到一個對象,就會自動執(zhí)行toString

默認值是Object類里的toString,getClass().getName() + "@" + Integer.toHexString(hashCode()); 類名+hash碼?

類內對象初始化:

  1.在對象定義出

  2.構造器中

  3.使用對象前:惰性初始化,可以減少負擔

  4.使用實例初始化

7.2繼承語法

*所有類都隱式繼承Object類

*子類自動得到父類的所有域和方法,構造器自動先調用父類的構造器

*子類可以覆蓋父類的方法,使用super表示父類的引用?也可以添加新的方法

7.2.1 初始化父類

*在創(chuàng)建子類對象時,該對象包含了一個父類的子對象,包裝在子類的內部。子類總是在構造器第一句之前“偷偷”調用父類構造器

*如果父類構造器帶參數,則必須用super顯示調用,且必須位于構造器第一句!

7.3代理Delegation??

我的理解:使用繼承,父類的所有方法都向外部暴露

     代理:使用組合,且對象為PRivate,提供public方法,方法內部調用組合對象的方法,這樣可以有更多的控制力

7.4結合使用組合和繼承

7.4.1確保正確清理

Java沒有C++析構函數的概念,如果有必要的清理操作,就必須顯式的編寫,并確保類使用者知道他們必須調用這一方法。

通常將清理動作放在finally子句中保證一定被執(zhí)行!

如果必須親自處理清理動作時,必須多加小心

7.4.2名稱屏蔽

Java允許在子類中對父類的方法重載

在覆蓋時,可以添加@Override注解,表明是方法覆蓋,如果出現重載現象,編譯器會報錯,避免重載而非覆蓋!

7.5在組合與繼承之間選擇

組合通常是使用已有對象的功能,通常為private僅提供給類內部使用

有時設為public也具有意義,特別是has-a的關系時

繼承是is-a,是從抽象到具體的關系!

7.6protected關鍵字

7.7向上轉型

要求父類引用 可以接受子類的引用,以為父類能干的事子類都能干!唯一可能發(fā)生的事情就是丟失方法。

7.8final關鍵字

final通常表示“這是無法改變的”,原因是設計或效率

7.8.1final數據

java常量必須是基本類型。如果是final引用,只能是引用不變,不能保證對象不變!

空白final:在聲明時不賦值,在使用前賦值

final參數:在方法中無法改變引用。

7.8.2final方法

原因:禁止子類覆蓋

private:隱含語義是禁止覆蓋,但實質上private方法對子類是不可見的,所以子類如果有一個父類private方法,其實不是覆蓋,而是一個“新”方法!

7.8.3final類

final類不允許有子類!

7.8.4忠告

廢話一堆,就是說要謹慎考慮。。。

7.9初始化及類的加載

加載順序:當運行是,static先加載,基類先加載


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 扎兰屯市| 尤溪县| 水富县| 禹城市| 凤山县| 隆林| 乌拉特后旗| 资兴市| 蒲江县| 额尔古纳市| 武义县| 尖扎县| 玉田县| 张北县| 鹤山市| 灵宝市| 遂溪县| 容城县| 东莞市| 沧源| 株洲市| 原阳县| 包头市| 荃湾区| 新野县| 潢川县| 定陶县| 古浪县| 安新县| 宽甸| 翁牛特旗| 河东区| 大兴区| 北碚区| 南澳县| 梁平县| 吕梁市| 庆元县| 武功县| 三都| 郴州市|