赞
踩
来自我的个人博客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<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。