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

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

Objective-C中的封裝、繼承、多態、分類

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

封裝的好處:

  1. 過濾不合理的值
  2. 屏蔽內部的賦值過程
  3. 讓外界不必關注內部的細節

繼承的好處:

  1. 不改變原來模型的基礎上,拓充方法

  2. 建立了類與類之間的聯系

  3. 抽取了公共代碼

  4. 壞處:耦合性強(當去掉一個父類,子類將不能再使用)

繼承的注意點:

  1. 子類和父類不能有相同的成員變量
  2. 子類可以重寫父類的方法
  3. 子類方法和屬性的訪問過程:如果子類沒有,就去訪問父類的

繼承和組合:

 1 @interface Score : NSObject 2 { 3         int _cScore; 4         int _ocScore;   5 } 6 @end 7  8 @implementation Score 9 @end10 11 @interface Student : NSObject12 {13        Score *_socre;  // 這里用到組合,因為不能說成績是個學生14        int _age;  15 }16 @end17 18 @implementation Student19 @end

組合和繼承可以這樣理解:

  • 繼承是 xxx 是 xxx
  • 組合是 xxx 擁有 xxx

多態:不同的對象已自己的方式響應相同名稱方法的能力稱為多態

多態簡單的說就是:父類指針指向子類對象

多態的好處:

  • 用父類接收參數,節省代碼
#import <Foundation/Foundation.h>@interface Animal : NSObject@end@implementation Animal- (void)eat{    NSLog(@"Animal----eat food");}@end@interface Dog : Animal@end@implementation Dog- (void)eat{    NSLog(@"Dog----eat food");}@end@interface Cat : Animal@end@implementation Cat- (void)eat{    NSLog(@"Cat----eat food");}@end// 參數中使用的父類類型,可以傳入子類、父類對象void feed(Animal *a){        [a eat];}// 這個函數體現了多態的好處,節省了代碼int main(){        Animal *aa = [[Animal alloc] init];        feed(aa);        Dog *dd = [[Dog alloc] init];        feed(dd);        Cat *cc = [[Cat alloc] init];        feed(cc);}

多態的局限性:

  • 父類類型的變量 不能 直接調用子類的特有方法 (要用到強制轉換)
// 強制轉換Person *p = [[Student alloc] init];// 假如學習是學生特有的方法,如果想調用需要強制轉換// OC是弱語法如果用[p study]也可以(是動態綁定),但由于編譯器會出現警告,所以不要這么寫用強制轉換 讓其更合理Student *s = (Student *)p;[s study];
  • 動態綁定:在運行時根據對象的類型確定動態調用的方法

分類-Category:

分類的作用:在不改變原來類內容的基礎上,可以為類增加一些方法 (便于合作開發)

分類的使用注意:

  1. 分類只能增加方法,不能增加成員變量
  2. 分類方法實現中可以訪問原來類中的聲明的成員變量
  3. 分類可以重新實現原來類中的方法,但會覆蓋掉原來類中的方法 ,會導致原來的方法不能使用(所以一般不會在分類中重現實現原來類中的方法)
  4. 方法調用的優先級:分類(最后參與編譯的分類優先)---> 原來類 ---> 父類

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尤溪县| 石屏县| 兴化市| 万荣县| 怀宁县| 黔西| 甘洛县| 当涂县| 通山县| 金秀| 苏尼特右旗| 皮山县| 额敏县| 弋阳县| 宝坻区| 安泽县| 荃湾区| 秭归县| 大邑县| 西乌珠穆沁旗| 海城市| 南宁市| 浦江县| 台湾省| 南皮县| 定西市| 岢岚县| 固安县| 呼图壁县| 屯留县| 宁安市| 泰州市| 尚义县| 黔江区| 通化县| 江北区| 新丰县| 平舆县| 正安县| 井陉县| 洪洞县|