協議和繼承的關係

2021-07-04 10:38:25 字數 1344 閱讀 8756

/// 如果乙個類遵守了協議,那麼這個類的例項物件也就遵守了協議,具備了協議中的行為

// 協議規範了iosprogrammer類的行為

// 一旦遵守這個協議,協議中的方法就不需要宣告,直接實現

@protocol ioscoderprotocol // @protocol 協議名字 @protocol nsobject // 基協議

// 自定義的協議都要遵守 協議 基協議

// ioscoderprotocol 即為協議名字

//@required 必須實現 @optional選擇實現

@optional

- (void)writeioscode;

// 協議的內容,一旦乙個類遵守協議,就要實現協議中的方法

@protocol coderprotocol // nsobject 實現了 的方法

@required // 必須要實現的方法,預設是必須的

- (void)writecode;

@optional // 可選的,遵循協議的類可以不實現這個方法

- (void)sing;

/// 繼承和協議的關係

// 相同點:

/*協議和繼承都可以規範介面

a.協議功能就是規範介面(可以規範任何遵守協議的類)

b.多個子類繼承父類之後,父類就可以規範一些方法,子類繼承這些方法

*/// 不同點

/*協議:

a.協議中不可以宣告變數,只能宣告方法 (遵守協議的類實現方法)

b.乙個類可以遵守多個協議,實現類似c++的多繼承

繼承:a.繼承中可以宣告成員變數和方法,子類繼承父類之後,子類會繼承父類所擁有的成員變數和成員方法,子類可以不寫父類的方法

b.oc的繼承是乙個單繼承,沒有多繼承,乙個類只能繼承乙個父類

*/// 協議實現多繼承

/*現在有多個類,

第乙個是加法器類

第二個是減法器類

第三個是乘法器類

在c++中可以通過多繼承實現

但是oc中沒有多繼承,可以通過協議來實現

乙個計算器類,遵循了三個協議,來完成三個功能,類似於多繼承

*/#import "addprotocol.h"

#import "subprotocol.h"

#import "mulprotocol.h"

// 如果想要具備加減乘功能,需要整合三個協議,分別實現協議裡的方法

@inte***ce calculator : nsobject <

addprotocol,

subprotocol,

mulprotocol

>

協議和分類

通過建立category可以為現有 的類新增新方法。為什麼不 派生子類 因為objective c中 有很多類本質是類簇,為這樣 的類建立子類會很困難。或者我們可以建立子類,但 中正在使用 的某些工具集或庫可能無法處理新子類 的物件。使用category可以為任何類新增新的方法,甚至那些沒有源 的類...

daytime協議和時間協議

有乙個有用的除錯工具就是daytime服務。它的作用就是返回當前時間和日期,格式是字串格式。daytime服務是基於tcp的應用,伺服器在tcp埠13偵聽,一旦有連線建立就返回ascii形式的日期和時間,在傳送完後關閉連線。接收到的資料被忽略。daytime服務也可以使用udp協議,它的埠也是13,...

SLIP協議和PPP協議

slip 協議和ppp協議都是資料鏈路層協議。slip和ppp是序列線上最常用的兩個鏈路層通訊協議,它們為在點對點鏈路上直接相連的兩個裝置之間提供一種傳送資料報的方法。互聯的兩端裝置可以是主機與主機 路由器和路由器 主機和路由器。slip 協議 序列線路網際協議slip serial line in...