多重继承

2019-07-09  本文已影响0人  0fbf551ff6fb

多重继承无非就是 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.使用代理实现

设置医生为老师的代理,这样也可以完成做手术的任务

上一篇下一篇

猜你喜欢

热点阅读