对象也在obj-c中继承?

时间:2012-05-16 09:02:05

标签: objective-c design-patterns

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

@interface Class:NSObject<protocol>

第二类继承自第一类:

@interface Class2:Class

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

我读了一些与抽象课有关的帖子,但我找不到问题的答案,但其他有关实施的建议也会很受欢迎。

1 个答案:

答案 0 :(得分:3)

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

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

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