Objective-C 面向?qū)ο螅悍庋b、繼承、多態(tài)

面向?qū)ο笳Z言的三大特征

  1. 封裝 (Encapsulation) ;
  2. 繼承 (Inheritance);
  3. 多態(tài) (Polymorphism);

封裝、權(quán)限修飾符(@public、@private、@protected)

  • 隱藏屬性、方法或者實現(xiàn)細節(jié)的過程稱之為封裝。
  • 權(quán)限修飾符用來修飾實例變量,用來控制實例變量的訪問權(quán)限。
  • 在語法上,不存在私有方法。但約定:在 .m 文件中實現(xiàn),但在 .h 文件中沒有聲明的方法稱之為私有方法。
#import <Foundation/Foundation.h>
@interface Car : NSObject {
    /*    屬性的封裝
     *   1.使類的屬性不讓外部直接訪問
     */  2.外部使用這個類時,不需要關(guān)心這個類具有哪些屬性
    
    //@public 修飾的成員變量,外部可以直接訪問
    //不建議直接使用,因為破壞了屬性的封裝性
@public
    NSString *_name;    //名稱
    NSString *_color;   //顏色
    
    //@private 是私有屬性,只能在類的內(nèi)部訪問
    // 子類不能訪問private修飾的屬性
@private
    float width;    //車寬
    
    //@protected 受保護的屬性,
    //類的內(nèi)部,子類都可以訪問,類的外部不能訪問
@protected  //默認(rèn)的修飾
    float _capcity; //耗油量
    
    @package  //修飾的變量只能在當(dāng)前所在的框架中訪問
    
}

/*方法的封裝
 1.對功能實現(xiàn)的細節(jié)隱藏于封裝
 2.保護屬性
 */
- (void)run;

//封裝還可以保護屬性值的有效性
- (void)setCapicity:(float)capicity;

@end
//.m 文件實現(xiàn)中
//調(diào)用方法時可以對屬性值的有效性進行判斷
- (void)setCapicity:(float)capicity{
if (capicity < 0) {
    //給出錯誤處理
    return 0;
}
_capcity = capicity;
}

繼承

  • 子類具有父類的一般特性(包括屬性和行為),以及自身特殊的特性。
  • 定義一個通用的類,它有基本的實例變量。子類繼承了該類,就可以擁有這些實例變量。子類也可以定義自己的實例變量。
  • 被繼承的類叫超類或父類(superclass),繼承超類的類叫子類或派生類(subclass
  • OC中繼承的語法規(guī)則為: @interface 子類 : 父類
  • 子類自動繼承父類的屬性和方法。
  • OC語言的類都是單繼承,即一個子類只能有一個父類。(多繼承即一個子類可以有多個父類,它繼承了多個父類的特性

父類:

@interface ClassA : NSObject
{
int x;
} 
- (void) run; 
@end

子類:

@interface ClassB : ClassA  
- (void) printVar;
@end

方法重寫

  • 通過方法重寫,子類可以改變從父類繼承的行為。
  • 被重寫的方法定義必須與父類中的方法完全一樣。
  • 方法重寫必須滿足兩個條件:
    1. 必須要有繼承關(guān)系;
    2. 重寫方法的方法名、參數(shù)列表必須都一致;
      例如:重寫 init 初始化方法。

多態(tài)

  • 多態(tài)是指同一種類型,具有多種表現(xiàn)形態(tài)。
  • 多態(tài)的條件:
    1. 必須存在繼承關(guān)系。
    2. 子類重寫父類的方法。
    3. 父類聲明的變量指向子類對象。
  • 多態(tài)能夠使來自不同類的對象定義相同名稱的方法(不同的類可以有相同的方法名)。
  • 動態(tài)類型能使程序直到執(zhí)行時才確定對象所屬的類。
  • 動態(tài)綁定能使程序直到執(zhí)行時才確定實際要調(diào)用的對象方法。

Objective-C 系統(tǒng)總是跟蹤對象所屬的類
釋義:先判定對象所屬的類,然后在運行時確定需要動態(tài)調(diào)用的方法,而不是在編譯的時候。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容