OC的多繼承實現

2021-07-02 19:33:15 字數 1417 閱讀 4211

我們知道object-c是在c語言的基礎上新增了物件導向功能,相比於同樣是對c語言進行擴充套件的c++,object-c更加簡單,也更容易上手,但凡事必有利弊,作為程式語言,邏輯複雜也代表著其功能強大,例如c++中支援的多繼承在我們object-c是不被支援的,那麼object-c是否就真的拋棄多繼承的邏輯設計了呢?答

由上圖,我們有類classa、classb、classc及類中分別有方法a{}、b{}、c{},我們希望通過類c繼承a和b,c的物件就可以使用a、b、c方法了。例如:

classc *cobject = [[classc alloc] init];

[cobject a];

[cobject b];

[cobject c];

由於objective-c在語法上禁止類使用多繼承,所以我們classc無法直接繼承classa和classb,但是在協議的遵守上卻允許使用多繼承。所以我們分享在classa和classb中定義協議,協議方法分別為a{}、b{},**如下:

1、classa.h內容

@inte***ce classa : nsobject

@end

@protocol classaprotocol

-(void)a;

@end

2、classb.h內容

@inte***ce classb : nsobject

@end

@protocol classbprotocol

-(void)b;

@end

3、classc.h內容(引用classaprotocol和classbprotocol 協議)

此處我只定義乙個成員方法c。

而我在classc.m中的補充完善classaprotocol和classbprotocol中的a{}和b{}方法,詳見下圖

4、當我用classc實例如乙個物件cobject時,cobject就可以調動a{}和b{}方法,如下圖:

總結:類c雖然不能直接繼承類a和類b,但我們可以通過繼承兩個類中的協議,以此來繼承協議中的方法。

Objective C實現多繼承

我們都知道objective c不能像c 一樣支援多繼承,但是在objective c的使用經常會碰到需要使用多繼承的情況。例如,classa中有methoda,classb中methodb,而現在需要使用這兩個類中的方法。如何按照c 的程式設計思路,毫無疑問採用多繼承就搞定了,在objective...

oc中的繼承

繼承是物件導向程式設計的乙個重要原理,通過這個概念,將學會如何使用現有的類定義並使其適合自己的應用程式。oc中,沒有多繼承,只允許單繼承。乙個類可以繼承另外乙個類,被繼承的類稱為父類或超類,繼承的類稱為子類。父類自身也可以有父類,沒有父類的類位於層次結構的最頂層,稱為根類,oc中的根類是nsobje...

C 介面實現多繼承

前言 本博文主要講解c 介面實現多繼承,更多關於介面 繼承的知識,請檢視 c 介面 inte ce 精講 c 隱式介面與顯式介面 c 繼承細則,你真的知道嗎?介面是方法的抽象,如果不同的類有同樣的方法,那麼就應該考慮使用介面。c 中介面可以多繼承,介面之間可以相互繼承和多繼承。乙個類可以同時繼承乙個...