【发布时间】:2011-03-22 19:13:39
【问题描述】:
我有一个类,其中包含我想在另一个类中使用的方法,并且不想再次创建这些方法。 我知道这是个愚蠢的问题,但我从来没有这样做过。
谢谢,
【问题讨论】:
标签: iphone objective-c oop inheritance
我有一个类,其中包含我想在另一个类中使用的方法,并且不想再次创建这些方法。 我知道这是个愚蠢的问题,但我从来没有这样做过。
谢谢,
【问题讨论】:
标签: iphone objective-c oop inheritance
您可以使用继承来解决这个问题。在 AnotherClass 的声明中(在 .h 文件中),您可以声明它扩展了 ParentClass:
@interface AnotherClass : ParentClass {
// ...
}
// method declarations for methods that are new in AnotherClass
// methods from ParentClass would be inherited by AnotherClass
@end
【讨论】:
听起来你应该让第二个类成为第一个类的子类,或者为你的两个类创建一个公共超类
【讨论】:
你能解释一下这两个类之间的关系吗?新的可以是现有类的子类吗?两个独立的类确实不能共享实现——一个类不能借用另一个类的实例方法,除非它们之间存在继承关系。
【讨论】:
这里没有一个正确的答案。很大程度上取决于您的具体情况和对象模型。您可以采取几种不同的方法:
1) 创建一个超类来实现您想要重用的方法。您当前需要此功能的每个类都可以扩展这个新的超类。
2) 如果功能不是类的组成部分,您可能需要创建一个“实用程序”类,每个需要它的类都可以调用它。
3) 在某些情况下,可能适合创建一个“类别”来扩展您要子类化的类的功能。
一般来说,请考虑您的对象模型并决定该功能属于何处。如果您发现自己经常复制粘贴,这是一个警告信号,表明您的模型可能有点偏离。祝你好运!
【讨论】:
正如其他人所说,您有很多选择,但在您更详细地描述您的对象及其结构之前,我们无法确定最佳选择。
【讨论】:
您应该可以使用 ObjC Runtime 来执行此操作,但我认为子类化是更好的选择。
【讨论】: