0

我的问题是理论上的。在 obj-c 中,如果一个类实现了一个协议:

@interface Class:NSObject<protocol>

第二个类继承自第一个类:

@interface Class2:Class

Class2 是否实现了协议?我想创建一个具有多个实现的接口。我是通过定义一个父类来实现的,该类实现一个协议,该协议包括所有应该实现的方法。因此,如果子类未实现协议规定的所有方法,我希望子类化父类的程序员收到警告。顺便说一句,如果对响应很重要,我将为对象创建实现一个抽象工厂。

我读了一些关于抽象类的帖子,但我没有找到我的问题的答案,但其他关于实现的建议会很受欢迎。

4

1 回答 1

3

协议基本上是您的类将实现某些方法的承诺。当你继承一个实现协议的类时,子类也实现了协议,因为它继承了超类的所有方法。

当您声明您的公共超类实现了您的协议​​时,如果您实际上并未为协议中的所有方法提供实现,您将收到警告。您的子类继承了所有这些实现,因此您不会在那里收到任何警告。

根据您实际构建的内容,仅使用协议来定义必须实现的接口(方法),但没有任何通用超类可能会更好。然后,当您创建一个声明实现协议的新类时,如果您尚未实现协议的方法之一,您会收到警告。

于 2012-05-16T09:17:00.610 回答