MST

星途 面试题库

面试题:Objective-C 协议的多重继承模拟及原理

在Objective-C中,由于不支持传统的多重继承,如何利用协议(Protocol)来模拟多重继承的效果?请详细说明实现思路以及背后的原理,并给出一个具体的代码示例。
49.5万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 定义多个协议:为每个需要“继承”的功能定义一个协议,协议中声明相关的方法。
  2. 类遵循多个协议:让目标类遵循这些定义好的协议,通过实现协议中的方法来获取相应的功能。

背后原理

协议只是定义了一组方法的声明,不包含方法的实现。一个类遵循多个协议,就相当于这个类承诺会实现这些协议中定义的方法,从而模拟出从多个不同“父类”获取功能的效果,实现了代码功能的复用。

代码示例

// 定义第一个协议
@protocol Protocol1 <NSObject>
- (void)method1;
@end

// 定义第二个协议
@protocol Protocol2 <NSObject>
- (void)method2;
@end

// 类遵循多个协议
@interface MyClass : NSObject <Protocol1, Protocol2>
@end

@implementation MyClass
- (void)method1 {
    NSLog(@"执行 method1");
}

- (void)method2 {
    NSLog(@"执行 method2");
}
@end

// 使用示例
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        MyClass *obj = [[MyClass alloc] init];
        [obj method1];
        [obj method2];
    }
    return 0;
}