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

首頁 > 學院 > 開發設計 > 正文

Objective-C復合

2019-11-14 18:27:38
字體:
來源:轉載
供稿:網友

我接下來所要講得是復合

帶著問題學習會快一點

什么是復合? 有什么優點?什么時候用復合?什么是依賴關系?如何解決?

復合就是將一些個體組件組合起來形成一個整體。(一個類定義另一個類作為實例變量)

優點:

1.將其他對象引用到新創建的對象中,形成新的整體,功能更加強大。

2.耦合度較小(相對于繼承)

繼承是“is a”是一個,復合是“has a”有一個,比如電腦有一個鍵盤,汽車有一個引擎等等就可以用復合

依賴關系:一個類和另一個類或多個類之間的關系

比如A.h文件導入B.h文件,B.h文件導入C.h文件,這樣三個文件之間就建立一種關聯

如果C.h文件新增加一個實例變量,那么B.h,A.h文件則會重新編譯來接受這個變化,這就是依賴關系

用@class代替#import,@class是告訴編譯器這就是一個類可以放心使用,編譯器不需要知道這個類里面的內容,而是只要知道它是一個類,可以通過指針來引用

 

下面我們來通過一個實例來了解復合具體該怎么用

舉一個汽車類,汽車(Car)、引擎(Engine)、輪胎(Tire),使用復合完成一輛汽車的裝配

創建一個工程,main函數不動它,建立Engine類

.h文件不動它

 

創建Tire類

跟引擎類一樣

創建汽車類

在這里就使用到了@class,把引擎類和輪胎類看做是實例變量,不用調用類里面的東西就可以用@class否則還要用#import

這里就組裝汽車

在Car.m文件實例化

在main函數里面實現輸出

 

這只是很淺顯的復合例子,如果想深入讀者可以自己去寫,比如有汽車的四個輪胎都有自己不同的位置,當訪問汽車上某個輪胎時也要指定這個輪胎的具體位置才可以,所以在Car里面還要重寫setTire:(Tire*)newTire andIndex:(int )index 帶有索引的setter 方法,同樣也要添加帶有索引的getter方法,需要注意的要添加 if 判斷輪胎取值的范圍。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桑植县| 苏州市| 襄城县| 东至县| 洞口县| 太原市| 西安市| 宣汉县| 乐陵市| 平阳县| 县级市| 霍林郭勒市| 松阳县| 桂阳县| 稷山县| 怀集县| 论坛| 舞阳县| 洛宁县| 武城县| 泸溪县| 运城市| 穆棱市| 贡觉县| 克什克腾旗| 云南省| 铜鼓县| 昂仁县| 上栗县| 黑龙江省| 织金县| 泾源县| 东辽县| 通辽市| 京山县| 高平市| 宜兰县| 玉山县| 平阴县| 扶绥县| 庆阳市|