iOS學習筆記---oc語言第三天

來源:互聯網
上載者:User

標籤:style   class   blog   code   http   color   

繼承、初始化方法

一、繼承

繼承的上層:父類  繼承的下層:子類

繼承是單向的,不能相互繼承

繼承具有傳遞性:A繼承於B,B繼承於C,A具有B和C的特徵和行為

子類能繼承父類全部的特徵和行為(私人變數也繼承過來了,只是不能訪問)

 物件導向提供了繼承文法。能大大簡化代碼,把公用的方法和執行個體對象寫在父類裡。子類只需要寫自己專屬的執行個體變數和方法即可

繼承既能保證類的完整,又能簡化代碼

繼承特點

oc中只允許單繼承

沒有父類的類稱為根類,oc中得根類是NSObject(祖宗)

繼承的內容:所有的執行個體變數和方法

如果子類不滿意父類方法的實現,可以重寫父類的方法

繼承樹

繼承中方法的執行

 super 關鍵字

super是編譯器指令,並?對象。

作用:給super發訊息,可以執??類中實現的?方法。

?類可以重寫?類的?法,即:?類既有自己的實現,?有父 類繼承下來的實現,如果想使?用父類的實現,向super發送訊息

//重寫sayHi方法- (void)sayHi{    [super sayHi];//調用父類sayHi方法    NSLog(@"ok");}

 

- (void)study//學習{    [super sayHi];//調用父類sayHi方法    [self sayHi];//調用自身sayHi方法    NSLog(@"%@ 我正在努力學習",_name);}

 二、初始化方法

建立對象分兩步:開闢空間、初始化。

初始化?方法的主要作?用是:為某些執行個體變數賦初值。

初始化?方法在對象的整個?生命週期?裡只使?用?一次。

- (instancetype)initwithName:(NSString *)name sex:(NSString *)sex number:(NSInteger)number;//instancetype取代id- (id)initwithName:(NSString *)name sex:(NSString *)sex number:(NSInteger)number;

  //初始化的時候,優先調用父類的初始化方法,初始化父類中的變數,然後在初始化自己的變數。

    //每個類都清楚自己專屬的變數,因此。初始化方法裡僅僅初始化自己專屬的變數,通過調用父類的初始化方法,初始化繼承過來的變數

    ///經過一番調用之後,繼承樹上的所有變數都可以得到初始化

    //最不科學的初始化方法:在子類裡面,為每一個變數賦值,因為,你需要自己查閱都繼承了哪些變數。

?類定義了除?類中公用執行個體變數之外的執行個體變數。在自身的初始 化方法中,優先向super發送init訊息,初始化公開變數,初始化成 功之後,再初始化?身特有變數,從?完成全部執行個體變數的初始化。

初始化過程

1. 執?行?父類中實現的初始化?方法。(向上遞迴到NSObject類中的初始化?方法)

2. 從根類NSObject開始執?行初始化?方法。

3. 判斷?父類中的初始化是否成功,即self是否存在。

4. 完成對象的初始化設定,返回對象。

5. 初始化?子類執行個體變數。

 初始化方法特徵

初始化?方法是 “-”?方法

id或者instancetype類型的傳回值

以init開頭

可以帶0到多個參數 內部實現:先執?行super的初始化?方法,再初始化?自?身變數,return self。

三、便利構造器

 

便利構造器在初始化方法的基礎上前進了?小步。

封裝了對象建立過程。

 

便利構造器是“+”?法,返回本類型的執行個體,?法名以類名開頭。

可以有0到多個參數。 內部實現:封裝了alloc和初始化?法。使?用起來更加簡潔

實現函數中代碼
+ (Student *)studentWithName:(NSString *)name sex:(NSString *)sex hobby:(NSString *)hobby age:(NSInteger)age number:(NSInteger)number{ return [[Student alloc] initWithName:name sex:sex hobby:hobby age:age number:number];}
主函數內代碼 Student *student1 = [Student studentWithName:@"wangw" sex:@"man" hobby:@"xuexi" age:18 number:12];

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.