Java 引用超类的首选方式(类型化语言)

Java 引用超类的首选方式(类型化语言),java,c++,haxe,Java,C++,Haxe,实际上,这个问题经常出现。以模型视图为例。我有两个物体。模拟对象和渲染对象 ObjectRSim类(Object,指定为Render Sim)类似于: class ObjectRSsim { var simObject:ObjectSim; } ObjectRSim,使用ObjectSim的属性/无效性 存在继承ObjectRSim和ObjectSim的对象: PosObjectRSim和PosObjectSim(位置对象..) 或者 我应该在ObjectRSim层次结构类中引用Obje

实际上,这个问题经常出现。以模型视图为例。我有两个物体。模拟对象和渲染对象

ObjectRSim类(Object,指定为Render Sim)类似于:

class ObjectRSsim {
   var simObject:ObjectSim;
}
ObjectRSim,使用ObjectSim的属性/无效性

存在继承ObjectRSim和ObjectSim的对象:

PosObjectRSim和PosObjectSim(位置对象..)

或者


我应该在ObjectRSim层次结构类中引用ObjectSim继承层次结构中的每个类型,还是只使用simObject:Dynamic?

参数化依赖类和依赖成员

在这种情况下使用Dynamic是完全错误的。它通常速度很慢(我想除了javascript之外,每个haxe目标都很慢),没有内联,通常只用于与底层平台交互或使用序列化(YAML、JSON等)

谈论解决问题

若并没有数千个这样的对象,我可能只会为低级类对象创建另一个字段。从OOP的角度来看,这并不是最清晰的方法,但它通常会为我带来更简单、更清晰的代码

铸造是另一种选择(我个人不喜欢)


参数化可能是处理这一问题的最好方法,但我不确定HAXE中是否已经有类型限制的参数化。

因为java和C++是最有使用的类型化语言,它们具有参数化,这适用于用它们编写的应用程序,但是java或C++中的语法不起作用,它们已经有了自己的用于引用基类的语法,这就是psuedo代码。这个问题对于类型化语言来说是普遍存在的。不管怎样,答案要么是多个引用,要么是依赖项的参数化。是的,我们现在肯定有类型受限的参数化。
class PosObjectRSim extends ObjectRSim {
   var posSimObject:PosObjectSim;
}
class ObjectRSim {
   var simObject:Dynamic; //Dynamic is untyped Type from haxe, the compiler does not check calls to a Dynamic object. 
}