【发布时间】:2012-05-09 20:49:44
【问题描述】:
假设我有两个基类,Container 和 Gizmo。 Container 类有一个 Gizmo 类的实例变量。
现在我继承了Container(称为SubContainer),我也继承了Gizmo(SubGizmo)。在SubContainer 的某些方法中,我需要向Gizmo 没有但SubGizmo 有的一些属性发送消息。有什么方法可以将 ivar 覆盖为 SubContainer 中的 SubGizmo 类,以便我可以发送这些消息?
现在每次我需要使用这样的属性或方法时,我都可以通过将继承的 ivar 转换为 SubGizmo 来使其工作。
这就是我想要这种行为的原因:我已经有一个可以运行的游戏,但是我添加的模式越多,它就越难维护。如果我想更改/添加将在每种模式下运行的方法;我需要转到三个不同的游戏 - 控制器对象并进行更改。
通过子类化,我想将主要游戏机制保留在基类中,并为每种模式创建一个子类。这样,我在基类中所做的更改将反映在每种模式上。然而,每个控制器和游戏对象都有针对不同模式的新方法,并且它们相互发送消息。这就是我的问题所在。
【问题讨论】:
-
一个程序不会那么模棱两可
-
我很高兴你似乎同意我的班级名称;字母加上一些星星对我来说太难追踪了。 :)
-
@JacquesCousteau 这更清楚:)
标签: objective-c ios inheritance subclass ivars