黑馬程式設計師 IOS基礎第十九天(OC)

2021-07-03 19:59:28 字數 2770 閱讀 1276



1.兩個關鍵字:

self

和super

self

可以用在物件和類方法中1)

self

用在物件方法中:指代的時呼叫當前物件方法的那個物件2)

self

用在類方法中:指代的時當前類(實質是類物件)

總結:當

self

在方法中使用,誰呼叫這個方法,

self

指代的就是誰

super:

使用super

的地方,一定存在繼承關係

super

呼叫父類的方法

2、物件導向的其他特性:繼承

繼承概念:

假設有兩個類:

a b繼承是兩個類之間的關係

假設宣告

b類的時候,

1)匯入父類的標頭檔案

2)設定繼承關係

@inte***ce b : a ----> b

類繼承了a類

@end

關於繼承注意事項:

1)單一繼承(乙個類只能繼承另外乙個類)2)

oc支援多層繼承(

animal <-----dog <------bigyellowdog

)3)

子類可以繼承父類所有的屬性和方法

使用@private

修飾的成員變數

可以被子類繼承,但是不能訪問

4)子類可以直接使用從父類繼承過來的屬性和方法

子類可以呼叫子類的方法,也可以呼叫從父類的方法(

super

)子類可以使用

super

呼叫父類的方法

5)父類只能呼叫父類自己的方法

6)子類可以定義和父類同名的方法

(方法的重寫)7

)子類不能定義和父類同名的變數

8)方法的執行的順序:先執行子類的

--->

找父類--->

父。。。

-->nsobject-->報錯3

、成員變數修飾符的使用

成員變數修飾符有4個

@public

共有的,作用域:在任何類中都可以通過物件使用成員變數

@protected

受保護的,預設修飾,作用域:只能在當前類或者子類中使用

@private

私有的,作用域:只能在本類(本檔案)使用,可以被子類繼承,但是不能在子

類中使用

@package

框架級別,只能在框架中使用

4、私有方法

私有方法的實現:

1)通過類別

2)常見的書寫私有方法

定義:.m

中定義乙個方法,但是沒有

.h中宣告,那這個時候,該方法就是乙個私有方法

(不是真正的私有,只是被隱藏了

)呼叫:在類中

[self

私有方法名];3

)私有的變數

定義:1).m

中宣告的變數,是不能被繼承的2)

@implementation ***5、

description

使用nslog(@"%@",dog);

descriptioin

方法,在我們每次以

%@的形式列印物件的時候,

會預設呼叫的方法

方法有兩個:

1)-(nsstring *)description;

物件方法:

person *p = [person new];

nslog(@"%@",p); //

會呼叫description

物件方法

description

應用場景:

在子類中重寫該方法,輸出該物件的成員變數值。

-(nsstring *)description

nslog(@"%@",p); // age=18,name=zhangsan

2)+(nsstiring *)description

// [p class]----->person(

類物件)

nslog(@"%@",[p class]);

6、物件導向特性:多型

多型的概念:

不同的物件以自己的方式響應父類的乙個方法

多型的前提:

1)要有繼承關係

2)要有同名方法

3)要存在方法的重寫

多型的核心:

用父類的指標指向子類的物件

animal *ani = [dog new];

[ani run]; // dog run

多型的注意點:

1)如果存在多型,父類是可以訪問子類特有的方法

假設子類

dog

有乙個特有的方法

bark

[dog bark];

animal *an2 = [dog new];

[(dog*)an2 bark]; //

把父類的指標,強制型別轉換

2)如果不存在多型,父類是不可以訪問子類特有的方法的

animal *an3 = [animal new];

[(dog*)an3 bark]; //

錯誤的,不能強制轉換

7、類的本質(了解)

類的本質也是乙個類型別物件(類物件)

person *p = [person new]; //p

是乙個例項物件,p是

person

型別person

實質也是乙個物件

,又稱為

類物件

傳智部落格JAVA基礎第十九天

集合框架的圖 collection list 元素有序,可重複。arraylist 底層資料結構是陣列,查詢快,增刪慢。執行緒不安全。vector 底層資料結構是陣列,查詢快,增刪慢。執行緒安全,所以,查詢也慢。linkedlist 底層資料結構是鍊錶,查詢慢,增刪快。執行緒不安全。set 元素無序...

GO語言基礎語法之Map 第十九天)

package main import fmt func main 檢視元素在集合中是否存在 capital,ok datamap sunday 如果確定是真實的,則存在,否則不存在 if ok else api server listening at 127.0 0.1 31389 sunday ...

黑馬程式設計師 IOS基礎第十一天(C語言)

陣列指標 用乙個指標變數指向乙個陣列元素,就是陣列指標 作用 使用陣列指標間接訪問陣列元素 注意 1 陣列名 a不代表整個陣列,值代表陣列首元素的位址 2 p a 的作用是 把 a陣列的首元素的位址賦給指標變數 p 而不是 把陣列 a各元素的值賦值給p 2.在指標指向陣列元素時,允許進行以下運算 或...