iOSDay11之繼承

來源:互聯網
上載者:User

標籤:

物件導向的三大特性:封裝,繼承,多態。

1、繼承

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

把公用的?法和執行個體變數寫在?類?,?類只需要寫??專屬的執行個體變數和?法即可。

繼承是?向對象三?特性之?,合理的繼承,能減少很多冗餘代碼,加快開發速度。

 1> 繼承的特點:

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

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

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

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

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

 2> super

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

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

  重寫從?類繼承過來的?法的三種情況:

   • 完全以?類的實現內容為主,丟棄?類實現的內容。  

   • 完全以?類的實現內容為主,沒有?類實現的內容。

   • 既有?類對該?法的實現,也有?類對該?法的實現。

 3> 訊息發送機制

2、初始化方法 1> 初始化方法

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

  初始化?法在對象的整個?命周期?只使??次。

  注:初始化?法是在對象的初始化階段完成其執行個體變數的賦值操作,?個對象的初始化階段只有?次,所以初始化?法只使??次。

 1 - (id)init { 2   //給super發送init訊息:執??類中實現的init?法 3   self = [super init]; 4   //判斷從?類繼承過來的init?法是否初始化成功 5   if (self) { 6   //初始化設定 7   } 8   //返回初始化完成的對象 9   return self;10 } 

  ?類定義了除?類中公用執行個體變數之外的執行個體變數。

  在??的初始化?法中,優先向super發送init訊息,初始化公開變數, 初始化成功之後,再初始化??特有變數,從?完成全部執行個體變數的初始化。

 2> self

  self是系統關鍵字。 self在?法中指代當前?法的調?者。

  self在執行個體?法中,指代調?當前?法的對象。

  - (void)objectMethod {  }

  self在類?法中,指代當前類。

+ (void)classMethod {}
 3> 初始化方法特徵

  • 初始化?法是 "_"?法。

  • id 或者 instancetype 類型的傳回值。

  • 以init開頭。

  • 可以帶 0 到多個參數。

  內部實現:先執?super的初始化?法,再初始化??變數,後return self

 4> 初始化過程
  • ??的初始化?法中,優先調??類的初始化?法。
  • ?類的初始化?法中再調??類的初始化?法,依次往上調?。
  • 處於最上層的初始化完成之後,回到第?層的初始化?法中, 完成第?層的初始化。
  • 第?層的初始化完成之後,回到第三層的初始化?法中,依次執?初始化?法,直到本類的初始化?法完成。
 5> 指定初始化方法

  命名規則:以initWith開頭,後面跟上參數列表

1 - (id)initWithName:(NSString *)name gender:(NSString *)gender {2     self = [super init];3     if (self) {4         _name = name;5         _gender = gender;6     }7     return self;8 }
3、便利構造器 1> 封裝了對象建立過程

  內部實現:封裝了alloc和初始化操作,建立對象更加?便快捷。

 2> 特徵

  • 便利構造器是 "+" ?法。

  • 返回本類型的執行個體。

  • ?法名以類名+ With + 參數列表。

  • 可以有 0 到多個參數。

 3> 便利構造器聲明,實現和調用

  聲明:

 1    + (id)personWithName:(NSString *)name gender:(NSString *)gender;            

  實現:

 

1 + (id)personWithName:(NSString *)name gender:(NSString *)gender {2 3     return [[Person alloc] initWithName:namegender:gender];4 5 } 

 

  調用:

 1 Person *per = [Person personWithName:@"Frank" gender:@"男"];                       

 

iOSDay11之繼承

聯繫我們

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