【发布时间】:2015-10-26 15:36:32
【问题描述】:
假设我有两个类:
class PlayerManagerParent {
public function new(){
}
}
class GameManagerParent {
public var playerManager:PlayerManagerParent();
public function new(){
}
}
然后我将其子类化为
class PlayerManagerChild extends PlayerManagerParent {
public function new(){
super();
}
public function someMethod(){
}
}
class GameManagerChild extends GameManagerParent {
public function new(){
super();
this.playerManager = new PlayerManagerChild();
}
}
然后我创建GameManagerChild 的实例并想访问someMethod():
var gameManager:GameManagerChild = new GameManagerChild();
gameManager.playerManager.someMethod();
我当然不能这样做,因为 gameManager.playerManager 是 playerManager:PlayerManagerParent 的类型,它没有定义 someMethod() 并且编译器/类型检查器给了我错误。
如果不在父类中声明someMethod() 或将playerManager 类型设置为Dynamic,我该如何解决这个问题(这是一个选项,但我无法遍历playerManager 中的可迭代字段,例如) ?
【问题讨论】:
标签: inheritance haxe