iOS多继承的实现及区别

来自我的个人博客Minecode.link

多继承可以允许子类从多个父类派生,而Objective-C并不支持多继承,但我们仍可间接实现。

Objective-C实现多继承主要可以通过协议、分类、消息转发来实现。我们来总结一下其使用以及优缺点。

通过协议实现

协议主要是用来提出类应遵守的标准,但其特性也可用来实现多继承。一个类可以遵守多个协议,也即实现多个协议的方法,以此来达到多继承的效果。

概念上的单继承和多继承应该是继承父类的属性和方法,并且不经重写即可使用,但通过协议实现多继承有如下不同:

  • 子类需要实现协议方法
  • 由于协议无法定义属性,所以该方法只能实现方法的多继承

下面来看一下示例代码:

// 编程技能
@protocol Program <NSObject>
- (void)program;
@end
// 绘画技能
@protocol Draw <NSObject>
- (void)draw;
@end
// 歌唱技能
@protocol Sing <NSObject>
- (void)sing;
@end

// 原本一个什么也不会的程序员
// 学会了多个技能
@interface Programmer : NSObject <Draw, Sing>
// 继承的协议方法自动公有,无须声明接口
@end

@interface Programmer () <Program>
// 继承的协议方法自动私有,无须声明接口
@end

// 需要自行实现协议方法
@implementation Programmer
- (void)program {
    NSLog<
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值