A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

半度微凉

初级黑马

  • 黑马币:19

  • 帖子:10

  • 精华:0

5黑马币
iOS中是不存在多继承的,但是有哪些方法可以代替多继承问题?可以的话请举个例子,谢谢了

最佳答案

查看完整内容

在目前官网所给视频中,要想实现楼主所说的代替多继承的问题,只有使用协议了。 协议只需要声明方法,谁遵守了这个协议谁就去实现协议中的方法。 iOS中只可以单继承,却可以遵守多个协议。例子如下:(代码是我现写的) @protocol playGameProtocol -(void)playLoL; -(void)playDota; @end @protocol studyProtocol -(void)learnC; -(void)learnJAVA; @end @interface Person @end @implementation Person -(void)playLoL{ ...

10 个回复

倒序浏览
在目前官网所给视频中,要想实现楼主所说的代替多继承的问题,只有使用协议了。
协议只需要声明方法,谁遵守了这个协议谁就去实现协议中的方法。
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来修饰方法。
协议中只可以定义方法不可以定义成员变量。
就这些。
回复 使用道具 举报
没有多继承           可以多级继承啊
回复 使用道具 举报
楼上的哥们说的是java
ios好像可以多继承
回复 使用道具 举报
顶一个,
回复 使用道具 举报
其实我觉得协议和多继承挺像的
回复 使用道具 举报
caiyao 中级黑马 2015-9-13 22:13:20
7#
使用接口可以实现多继承
回复 使用道具 举报
协议+强制实现关键字=接口
回复 使用道具 举报
f1gogo 中级黑马 2015-9-20 20:58:32
9#
协议,protocol  
回复 使用道具 举报
学习了!~····
回复 使用道具 举报
用接口啊  协议+强制实现关键字=接口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马