多重继承无非就是 A类 同时继承与B类和C类 OC不支持直接继承 可以通过消息转发机制和代理实现
例如:有一个teacher类 和 一个Doctor类 现在需要tercher可以去做手术 这时老师只有继承了doctor才可以实现。
1.使用消息转发机制实现
在teacher类中直接调用手术的方法,teacher可能无法完成,这时会调用- (id)forwardingTargetForSelector:(SEL)aSelector方法,在此方法中让Doctor去做手术,间接完成了多重继承
- (id)forwardingTargetForSelector:(SEL)aSelector
{
Doctor *doctor = [[Doctor alloc]init];
if([doctorrespondsToSelector:aSelector]) {
return doctor;
}
return nil;
}
2.使用代理实现
设置医生为老师的代理,这样也可以完成做手术的任务
网友评论