程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> OC基礎:類的擴展.協議

OC基礎:類的擴展.協議

編輯:關於C語言

OC基礎:類的擴展.協議


 

//再設計一個類的時候,有些方法需要對外公開(接口),有些僅供內部使用.

類的擴展:為類添加新的特征(屬性)或者方法

對已知類:

1.直接添加

2.繼承(在其子類中添加實例變量和方法)

3.使用extension(對私有方法和私有屬性的擴展(未在.h中申明的方法就是私有方法))

 

// extension

// 一般我們把類的延展直接寫在類的.m文件中

// extension 對私有方法和私有屬性的擴展(未在.h中申聲的方法)

// 對已知類擴充私有方法,選擇 Objective - C file

// 使用時要把頭文件引入,類的延展裡可以添加類的實例變量


對未知類:

category 分類,類名,為沒有源代碼的類添加方法,不能添加實例變量

 

總結:extension 和 category

1.extension為已知類添加私有屬性和私有方法.category為沒有源代碼(未知類)的類添加方法.

2.extension可以添加實例變量(屬性),category不能添加實例變量.

3.extension文件可有.h文件, category同時生成一對.h和.m文件

4.extension一般不寫代碼,寫在類的.m文件

 

總結: category 和 subclass(子類)

1.category只能為類添加方法,subclass既能為類添加方法又能添加實例變量

 

2.category新添加的方法成為類的一部分,能被子類繼承,subclass新添加的方法只有子類才有,父類不具有

3.category使用原始類的實例(-)或者原始類的調用方法(+),subclass只有子類才能使用

-------------------------------------Protocol 協議-----------------------------------------

 

只要遵守了協議即可成為代理

代理:自己不想干的事情讓比人去做,別人充當的就是代理

如果一個類想要遵守一個協議,直接在.h文件中的父類後加<協議名>在協議裡面,寫必須遵守的方法和可選擇遵守的方法

如:

 

@protocol BoyfriendProtocol

@required //必須實現的方法

-(void)makeMoney;

@optional //可選擇的實現

-(void)cook; //做飯

-(void)clean; //清潔

-(void)funny; //幽默

@end


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved