OC封裝繼承和例項化

2022-09-17 06:18:11 字數 2100 閱讀 4750

[person new] 做了三件事:

1)申請記憶體空間

2)給例項初始化

3)返回空間首位址

例項變數儲存在堆區

``指標(物件名)儲存在棧區

物件方法儲存在**區

呼叫方法先找到p所指向的堆區的指標—isa然後再找到isa所指向的**區的方法

物件方法只能由物件來呼叫,類方法只能由類來呼叫,不能當做函式來呼叫

函式屬於整個檔案,函式的宣告可以在main內部,也可以在main函式外面,除了@inte***ce @end之間

函式:1)所以函式都是平行的

2)函式不存在隸屬關係

3)使用時可以直接掉用

4) 不可以訪問物件中的成員變數

@inte***ce @end 不可以巢狀

在宣告時不可以對成員變數初始化

成員變數和方法不可以用static修飾

[person new]做了三件事:

1)申請記憶體空間

2)給例項變數初始化

3)返回空間首位址

申請空間在記憶體的哪個區:

new的時候申請的空間在空間的堆區

如果例項變數是基本型別,此時初始化為0.

如果是字串型別,則初始化為null

例項變數又儲存在什麼地方

堆區p(指標變數名)棧區

物件方法儲存在**區

為什麼[p run]; 就可以呼叫方法了?如何呼叫的

首先找p對應的空間,然後找到_isa,再找到_isa所指向的**空間,然後到該空間中找方法

15)類方法:

類方法呼叫不需要例項

類方法的呼叫 [類名稱 類方法名稱]

類方法名稱和物件方法名稱可以相同

類方法的好處是不需要建立物件,直接通過類名進行訪問,不需要在堆區建立任何空間

類方法中不允許訪問例項變數,可以傳個引數

例項方法可以訪問例項變數

物件方法可以呼叫物件的其它方法

在類方法中可以呼叫類的其它方法,可以用self,也可以使用其它類名呼叫方法方法

在類方法中也可以呼叫物件方法,只不過是通過引數把物件傳過來或建立乙個物件

類方法不能呼叫自身(死迴圈)

[[car alloc] init] 等同於[car new]

匿名類作為方法引數使用:

person *p = [[person alloc] init]

[p gohome:[car new]];

16)封裝:

例項變數只能被當前類的物件方法訪問

set方法的書寫規範:

1)set方法一定是乙個物件方法

2)set方法一定不能有返回值

3)set方法必須以set開頭    

4)set之後跟的是例項變數去掉下劃線,並且首字母大寫

5)set方法一定有引數,而且引數型別和例項變數的型別一致

6)oc中沒有方法過載,oc中方法不能同名

7)static 定義的變數只能在當前檔案中使用

17)self:

self指呼叫當前方法的物件

self在當前類方法中指代當前類

person *p = [person new];

[p class]; //返回當前類

函式內部可以定義和全域性變數同名的變數

如果同名,區域性變數會暫時遮蔽全域性變數的作用域(可以用self來區分)

18)繼承:

基類的私有屬效能被繼承,但不能使用

oc中是單繼承

呼叫物件方法先查詢本類中是否有方法,否則查詢父類

支援多層繼承

變數預設修飾符是@protect

@private 只能在當前類的物件方法中使用

.m中定義的變數就是私有變數

沒有在.h中宣告的方法是私有方法

私有方法不能被子類繼承

nslog("%p", d); 列印物件位址

nslog("%@", d); 列印類名+物件位址

以%@的格式列印物件d,此時呼叫物件的description方法,如果子類中沒有重寫description方法則呼叫父類的

[d class]; 獲取dog類

類方法不能訪問例項變數

不要在description方法中使用%@和self會造成死迴圈

OC 封裝,繼承,多型

就是將一段 裝成乙個整體,將內部的例項變數和方法設定訪問許可權 1.set 方法1.作用 提供乙個方法給外界設定成員變數值,可以在方法裡面對引數進行相應過濾 2.命名規範 1 方法名必須以 set開頭 2 set後面跟上成員變數的名稱,成員變數的首字母必須大寫 3 返回值一定是 void 4 一定要...

iOS開發之OC語法基礎(二) 繼承和例項化

1 掌握物件導向程式設計特性 繼承 2 掌握oc中的自定義初始化方法 3 掌握oc中的便利構造器的寫法 1 oc中,乙個類可以繼承另外乙個類 2 被繼承的類稱為父類 super class 或超類 3 繼承的類稱為子類 subclass 4 子類可以直接使用父類的部分特徵和行為 注意 oc中只允許每...

OC中的封裝繼承多型

setter方法 作用 設定成員變數的值 格式 1.setter方法一定是物件方法 2.一定沒有返回值 3.一定以set開頭,並且set後面跟上需要設定的成員變數的名稱去掉下劃線,並且首字母大寫 4.一定有引數,引數型別一定和需要設定的成員變數的型別一致,並且引數名稱就是成員變數的名稱去掉下劃線 5...