java - 引用父类(super class)(类型化语言)的首选方式

标签 java c++ haxe

这个问题其实经常出现。以这个实例模型 View 为例。我有 2 个对象。仿真对象和渲染对象。

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

class ObjectRSsim {
   var simObject:ObjectSim;
}

ObjectRSim,使用 ObjectSim 的属性/无效。

有继承ObjectRSim和ObjectSim的对象:

PosObjectRSim 和 PosObjectSim(位置对象..)

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. 
}

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

最佳答案

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

谈论解决问题...

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

转换是另一种选择(我个人不喜欢)。

参数化可能是处理这个问题的最佳方式,但我不确定我们是否已经在 haxe 中进行了类型限制参数化。

关于java - 引用父类(super class)(类型化语言)的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891536/

相关文章:

java - 类似于Java中的Scala宏

java - 如何从原始数据创建 BufferedImage

xml-parsing - 如何加载 XML 文件并使用 Haxe 解析它

enums - 枚举值作为 Haxe 中的参数默认值

haxe - 如何在 Haxe 中处理大数字?

java - 将填充空格插入字符串

java - 直接赋final变量和在构造函数中赋final变量有区别吗?

c++ - 将char数组传递给exec *()系列函数后,如何释放它们的内存

c++ - C++ 中未定义的右移行为

c++ - 指针 'this+1' 在 C++ 中指的是什么?