OC學習(三)繼承和方法

繼承是OC面向對象編程的三大特性之一

       當多個類出現部分相同的實例變量和方法時,就要考慮使用繼承

       繼承的使用:將多個類中相同的實例變量和方法提出來寫成一個公共的父類

       子類繼承父類:子類會將父類中除了聲明爲 @private 的實例變量以及私有方法之外的內容直接繼承,

當子類和父類有同樣的內容時,可以將這些相同的內容從子類中刪除.另外,子類從父類繼承過來的實例

變量和方法,就屬於子類所有(也就相當於將父類的內容複製一份放在子類中).

       私有方法:在.m文件中實現了,但是沒有在.h文件中聲明的方法,叫做私有方法.私有方法不允許在外部

訪問,只能在本類中訪問.

       從父類繼承過來的方法,子類又實現了一次該方法,稱爲重寫父類方法.

       繼承父類方法時會存在三種情況:

1.保留父類對該方法的實現(不重寫該方法)

2.按子類重寫之後的方法來實現(完全重寫該方法)

3.一個方法既有父類對該方法的實現,也有子類對該方法的實現.(在原方法的基礎上修改該方法)

       自定義初始化方法:

對於自己寫的類,我們一般都會自己寫一個自定義的初始化方法,在創建對象時,使用該方法進行初始化,這裏

以一個Person類爲例,代碼實現如下

- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
    self = [super init];
    if (self) {
        _name = name;
        _gender = gender;
        _age = age;
    }
    return self;
}</span>
初始化方法是對對象進行初始化,因此是一個減號方法.

初始化完成返回該對象,因此返回值類型爲 id 類型.

初始化方法的方法名一般以 init 開頭,然後 + With + 對參數的描述

        便利構造器方法:

便利構造器,顧名思義,就是方便我們創建對象時使用的.在方法內部爲我們實現了開闢空間的過程,仍然

以Person爲例,代碼如下

+ (id)personWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
    return [[Person alloc] initWithName:name gender:gender age:age];
}</span>
便利構造器用於類創建對象,使用對象是類,因此是一個加號方法.

內部通過開闢空間,然後調用已經寫過的自定義的初始化方法,完成對象的創建,最後返回對象.

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章