黑马程序员技术交流社区

标题: iOS中有哪些方法可以代替多继承问题? [打印本页]

作者: 半度微凉    时间: 2015-9-7 14:54
标题: iOS中有哪些方法可以代替多继承问题?
iOS中是不存在多继承的,但是有哪些方法可以代替多继承问题?可以的话请举个例子,谢谢了

作者: 408205555    时间: 2015-9-7 14:54
在目前官网所给视频中,要想实现楼主所说的代替多继承的问题,只有使用协议了。
协议只需要声明方法,谁遵守了这个协议谁就去实现协议中的方法。
iOS中只可以单继承,却可以遵守多个协议。例子如下:(代码是我现写的)
@protocol  playGameProtocol <NSObject>
-(void)playLoL;
-(void)playDota;
@end

@protocol studyProtocol <playGameProtocol>
-(void)learnC;
-(void)learnJAVA;
@end

@interface Person <studyProtocol>

@end

@implementation Person
-(void)playLoL{
        NSLog(@"person play lol");
}
-(void)playDota{
        NSLog(@"person play dota");
}
-(void)learnC{
        NSLog(@"person learn c");
}
-(void)learnJAVA{
        NSLog(@"person learn java");
}
@end

Person遵守了studyProtocol协议,studyProtocol协议遵守了playGameProtocol协议。
所以Person必须要实现以上两个协议中所要定义的方法。
因为方法没有关键字修饰所以是必须要实现的。
如果要想让方法可实现可不实现,可用@optional来修饰方法。
协议中只可以定义方法不可以定义成员变量。
就这些。
作者: 你说呢    时间: 2015-9-8 19:58
没有多继承           可以多级继承啊
作者: wu199309023    时间: 2015-9-8 22:39
楼上的哥们说的是java
ios好像可以多继承
作者: Java_EE    时间: 2015-9-11 22:52
顶一个,
作者: zq110105    时间: 2015-9-13 11:12
其实我觉得协议和多继承挺像的
作者: caiyao    时间: 2015-9-13 22:13
使用接口可以实现多继承
作者: 木子青    时间: 2015-9-19 22:52
协议+强制实现关键字=接口
作者: f1gogo    时间: 2015-9-20 20:58
协议,protocol  
作者: liminghui    时间: 2015-9-24 10:14
学习了!~····
作者: Jusive    时间: 2015-9-25 06:43
用接口啊  协议+强制实现关键字=接口




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2