理解封裝
將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問物件內部資訊,而是通過該類所提供的方法來實現對內部資訊的操作和訪問。
對乙個類或物件實現良好的封裝,可以實現以下目的
訪問控制符
objective-c提供了4個訪問控制符:@private、@package、@protected 和 @public。訪問控制符用於控制類的成員變數是否可以被其他類訪問
特點
@inte***ce subclass : superclass
//方法定義
@end
重寫父類的方法
super關鍵字
super是objective-c提供的乙個關鍵字,如果需要在子類方法中呼叫父類被覆蓋的方法,使用super關鍵字來調父類被覆蓋的方法。super用於限定該物件呼叫它從父類繼承得到的屬性或方法。
理解多型
多型,即對於不同物件響應同乙個方法時做出的不同反應。
objective-c指標型別的變數有兩個:編譯時型別、執行時型別。編譯時型別由宣告該變數時所下使用的型別決定,執行時型別由實際賦給該變數的物件決定。如果編譯時型別與執行時型別不一致,就有可能出現所謂的多型。
實現多型的前提
id型別
oc中提供了乙個id型別,id型別的變數可被賦值給任意型別的指標變數,id型別的變數可以呼叫該變數實際所指物件的方法。 當通過id型別變數來呼叫方法時,oc將會執行動態繫結,動態繫結,是指oc將會跟蹤物件所屬類,它會在執行時判斷該物件所屬類,並在執行時確定需要動態呼叫的方法,而不是在編譯時確定要呼叫的方法。
定義乙個fkbase類,該fkbase類的介面部分如下:
#import
@inte***ce fkbase : nsobject-(
void
) base;-(
void
) test;
@end
fkbase類實現部分如下:
@implementation fkbase-(
void
) base -(
void
) test
@end
定義乙個fkbase的子類fksubclass,該子類將會覆蓋父類中定義的test方法。
介面部分如下:
#import
#import "fkbase.h"
@inte***ce fksubclass : fkbase-(
void
) sub;
-@end
fksubclass實現部分如下:
#import
#import "fksubclass.h"
@implementation fksubclass-(
void
) test -(
void
) sub
@end
程式如下:
#import
#import "fksubclass.h"
intmain
(int argc,
char
* ar**)
}
該程式中指標變數ploymophicbc編譯時型別是fkbase,執行時型別時fksubclass,當該指標變數呼叫test方法時(fkbase類中定義了該方法,fksubclass子類重寫了父類該方法),實際上執行的是fksubclass類中覆蓋後的test方法,這就可能出現多型。 OC 封裝,繼承,多型
就是將一段 裝成乙個整體,將內部的例項變數和方法設定訪問許可權 1.set 方法1.作用 提供乙個方法給外界設定成員變數值,可以在方法裡面對引數進行相應過濾 2.命名規範 1 方法名必須以 set開頭 2 set後面跟上成員變數的名稱,成員變數的首字母必須大寫 3 返回值一定是 void 4 一定要...
OC中的封裝繼承多型
setter方法 作用 設定成員變數的值 格式 1.setter方法一定是物件方法 2.一定沒有返回值 3.一定以set開頭,並且set後面跟上需要設定的成員變數的名稱去掉下劃線,並且首字母大寫 4.一定有引數,引數型別一定和需要設定的成員變數的型別一致,並且引數名稱就是成員變數的名稱去掉下劃線 5...
OC基礎語法之封裝繼承多型
封裝 隱藏內部實現,穩定外部介面.封裝就是定義類 定義屬性 定義方法 set方法 提供乙個方法給外界設定成員變數的值,沒有返回值,一定要接收乙個引數,引數型別跟成員變數型別一樣,形參的名稱不能跟成員變數名一樣。get方法 返回物件內部的成員變數,肯定有返回值,返回值與成員變數型別一致,方法名跟成員變...