【學習筆記】【OC語言】繼承,學習筆記oc繼承

來源:互聯網
上載者:User

【學習筆記】【OC語言】繼承,學習筆記oc繼承

1.繼承的基本用法

 1 #import <Foundation/Foundation.h> 2 /* 3  1.繼承的好處: 4  1> 抽取重複代碼 5  2> 建立了類之間的關係 6  3> 子類可以擁有父類中的所有成員變數和方法 7   8  2.注意點 9  1> 基本上所有類的根類是NSObject10  */11 12 13 /********Animal的聲明*******/14 @interface Animal : NSObject15 {16     int _age;17     double _weight;18 }19 20 - (void)setAge:(int)age;21 - (int)age;22 23 - (void)setWeight:(double)weight;24 - (double)weight;25 @end26 27 /********Animal的實現*******/28 @implementation Animal29 - (void)setAge:(int)age30 {31     _age = age;32 }33 - (int)age34 {35     return _age;36 }37 38 - (void)setWeight:(double)weight39 {40     _weight = weight;41 }42 - (double)weight43 {44     return _weight;45 }46 @end47 48 /********Dog*******/49 // : Animal 繼承了Animal,相當於擁有了Animal裡面的所有成員變數和方法50 // Animal稱為Dog的父類51 // Dog稱為Animal的子類52 @interface Dog : Animal53 @end54 55 @implementation Dog56 @end57 58 /********Cat*******/59 @interface Cat : Animal60 @end61 62 @implementation Cat63 @end64 65 int main()66 {67     Dog *d = [Dog new];68     69     [d setAge:10];70     71     NSLog(@"age=%d", [d age]);72     return 0;73 }

子類方法和屬性的訪問過程:如果子類沒有,就去訪問父類的
父類被繼承了還是能照常使用的
父類的靜態方法
畫繼承結構圖,從子類抽取到父類
NSObject的引出:全部OC類的最終父類,包含了一些常用方法,比如+new

2.繼承的專業術語
父類\超類  superclass
子類  subclass\subclasses

3.繼承的細節
單繼承
子類和父類不能有相同的成員變數
方法的重寫

4.super關鍵字
分別調用父類的對象方法和類方法

 1 /* 2  殭屍 3   4  跳躍殭屍、舞王殭屍、鐵桶殭屍 5  */ 6 #import <Foundation/Foundation.h> 7  8 /* 9  super的作用10  1.直接調用父類中的某個方法11  2.super處在對象方法中,那麼就會調用父類的對象方法12    super處在類方法中,那麼就會調用父類的類方法13  14  3.使用場合:子類重寫父類的方法時想保留父類的一些行為15  */16 17 // 殭屍18 @interface Zoombie : NSObject19 - (void)walk;20 21 + (void)test;22 - (void)test;23 24 @end25 26 @implementation Zoombie27 - (void)walk28 {29     NSLog(@"往前挪兩步******");30 }31 32 + (void)test33 {34     NSLog(@"Zoombie+test");35 }36 37 - (void)test38 {39     NSLog(@"Zoombie-test");40 }41 @end42 43 // 跳躍殭屍44 @interface JumpZoombie : Zoombie45 + (void)haha;46 - (void)haha2;47 @end48 49 50 @implementation JumpZoombie51 52 + (void)haha53 {54     [super test];55 }56 57 - (void)haha258 {59     [super test];60 }61 62 - (void)walk63 {64     // 跳兩下65     NSLog(@"跳兩下");66     67     // 走兩下(直接調用父類的walk方法)68     [super walk];69     //NSLog(@"往前挪兩步----");70 71 }72 @end73 74 int main()75 {76     //[JumpZoombie haha];77     JumpZoombie *jz = [JumpZoombie new];78     79     [jz haha2];80     81     return 0;82 }

5.繼承的好處
不改變原來模型的基礎上,拓充方法
建立了類與類之間的聯絡
抽取了公用代碼
壞處:耦合性強

6.繼承的使用場合
它的所有屬性都是你想要的,一般就繼承
它的部分屬性是你想要的,可以抽取出另一個父類

7.代碼

 1 /* 2  1.重寫:子類重新實現父類中的某個方法,覆蓋父類以前的做法 3  2.注意 4  1> 父類必須聲明在子類的前面 5  2> 子類不能擁有和父類相同的成員變數 6  3> 調用某個方法時,優先去當前類中找,如果找不到,去父類中找 7   8  2.壞處:耦合性太強 9  */10 11 #import <Foundation/Foundation.h>12 // Person13 @interface Person : NSObject14 {15     int _age;16 }17 18 - (void)setAge:(int)age;19 - (int)age;20 21 - (void)run;22 23 + (void)test;24 25 @end26 27 @implementation Person28 29 + (void)test30 {31     NSLog(@"Person+test");32 }33 34 - (void)run35 {36     NSLog(@"person---跑");37 }38 39 - (void)setAge:(int)age40 {41     _age = age;42 }43 - (int)age44 {45     return _age;46 }47 @end48 49 // 不允許子類和父類擁有相同名稱的成員變數50 // Student51 @interface Student : Person52 {53     int _no;54     // int _age;55 }56 57 + (void)test2;58 59 @end60 61 @implementation Student62 // 重寫:子類重新實現父類中的某個方法,覆蓋父類以前的做法63 - (void)run64 {65     NSLog(@"student---跑");66 }67 68 + (void)test269 {70     [self test];71 }72 @end73 74 75 int main()76 {77     [Student test2];78     79 //    Student *s = [Student new];80 //    81 //    [s run];82     83     return 0;84 }

繼承的使用場合

 1 /* 2 1.繼承的使用場合 3  1> 當兩個類擁有相同屬性和方法的時候,就可以將相同的東西抽取到一個父類中 4  2> 當A類完全擁有B類中的部分屬性和方法時,可以考慮讓B類繼承A類 5  A 6  { 7     int _age; 8     int _no; 9  }10  11  B : A12  {13     int _weight;14  }15  16  // 繼承:xx 是 xxx17  // 組合:xxx 擁有 xxx18  19  2.組合20  A21  {22      int _age;23      int _no;24  }25  26  B27  {28      A *_a;29      int _weight;30  }31 */32 33 @interface Score : NSObject34 {35     int _cScore;36     int _ocScore;37 }38 @end39 40 @implementation Score41 @end42 43 @interface Student : NSObject44 {45     // 組合46     Score *_score;47 //    int _cScore;48 //    int _ocScore;49     int _age;50 }51 @end52 53 @implementation Student54 55 @end

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.