单继承还是多继承
网上搜索的资料大部分都说Object-C是单继承。语法上确实如此。然而,协议@protocol编译指令的引入,却使得Object-C的单继承不再那么纯粹。
协议声明和使用
@protocol ProtocolName
method1;
method2;
method3;
...
@end
//例如
@protocol MyPot
- (void) fun;
@end
//使用协议,需要在类继承时在父类后用<>将协议名括起来
@interface MyClass : NSObject<MyPot>
-(void)fun //实现协议方法
{}
@end
从示例来看,@protocol编译指令和C++的纯虚函数是类似的,和.net c++和c#中的接口(interface)语法是类似的,据说和java中的接口也是类似的
示例中,MyClass实际上继承了NSObject和MyPot,不再是纯粹的单继承了。
协议的继承或协议的遵从
@protocol Protocol_A
@end
//协议B继承协议A,或者协议B遵从协议A
@protocol Protocol_B <Protocol_A>
@end
函数重名问题
同时继承多个协议时,示例