OC 對封裝 繼承 多型的理解

2021-10-07 03:45:28 字數 2046 閱讀 8211

理解封裝

將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問物件內部資訊,而是通過該類所提供的方法來實現對內部資訊的操作和訪問。

對乙個類或物件實現良好的封裝,可以實現以下目的

訪問控制符

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方法 返回物件內部的成員變數,肯定有返回值,返回值與成員變數型別一致,方法名跟成員變...