oc 多继承

   我们知道object-C是在C语言的基础上添加了面向对象功能,相比于同样是对C语言进行扩展的C++,object-C更加简单,也更容易上手,但凡事必有利弊,作为编程语言,逻辑复杂也代表着其功能强大,例如C++中支持的多继承在我们object-C是不被支持的,那么object-C是否就真的抛弃多继承的逻辑设计了呢?答案是否定的,这里我们通过协议来实现类似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内容

@interface ClassA : NSObject

@end

@protocol ClassAProtocol <NSObject>

-(void)a;

@end

 

2、ClassB.h内容

@interface ClassB : NSObject

@end

@protocol ClassBProtocol <NSObject>

-(void)b;

@end

 

3、ClassC.h内容(引用ClassAProtocol和ClassBProtocol 协议)



此处我只定义一个成员方法c。

而我在ClassC.m中的补充完善ClassAprotocol和ClassBProtocol中的a{}和b{}方法,详见下图


4、当我用ClassC实例如一个对象cObject时,cObject就可以调动a{}和b{}方法,如下图:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值