3

Objective-C中的继承和类别有什么区别

两者都用于子类!那么它们之间有什么区别

4

2 回答 2

8

虽然 Category 是向基类添加功能的好方法,但像我这样来自其他面向对象技术(如 Flash)的人会发现有点难以理解这件事与继承链的关系。我想到了同样的问题,我对该主题进行了快速研究。

最后一件事是 Category 所做的事情与它讲述自己的事情相同。它将功能添加到基类。如果你记住了这一点,那么就不会有任何混乱。

好吧,为了理解这一点,让我们举个例子。假设有一个 A 类,而 B 类是 A 类的子类。在应用程序中,B 类被用在很多地方。现在,需要向 A 类添加更多功能,因此将新类别写为“A+newRole”。一旦编写了这个类别,新的功能就会被添加到基类中,在这种情况下是 A 类。这意味着,所有属于 A 类的子类的类,例如 B 类,都会自动获得该功能。太酷了 可以直接从子类调用类别中添加的新方法。这里唯一需要做的就是将 Category 文件导入到适当的位置。

于 2012-04-26T18:44:46.170 回答
4

类别在根本不生成新类的情况下向类添加了额外的功能,您只需扩展它,但它没有隐含的多态性或任何类似的东西。

另一方面,继承会自行生成一个新类,您可以在其中添加新的实例变量并通过多态性覆盖父类的行为。

于 2012-04-26T18:41:17.453 回答