我正在设计一种物理模拟器,其中包含三种可能会发生碰撞的物体。多态性重载
最基本的[摘要]类被称为Item
其中包含有关质量,位置&速度的信息。
还有其他3种类型:Circle
,Boundary
& Photon
其扩展Item
类,并有自己的属性。
我有一个名为List<Item>
其中system
包含各种Circles
,Boundaries
等我去通过这个列表使用的方法来检查碰撞:system.get(i).collide(system.get(j));
这个编辑速度等
我的问题是, Eclipse希望我在Circle
,Boundary
...类别collide(Item itemName)
的每一个中都有一个方法,但是通过这样做,编译器将无法以不同方式处理每种类型的项目。
我现在有在Circle
,Boundary
...类不同的方法,如:
collide(Circle c){..}
collide(Boundary b){..}
collide(Photon p){..}
但是,编译想要一个普通collide(Item i)
方法。
我该如何满足编译器的要求,但仍然按照我的方式继承不同类型的碰撞?
'system.get(我)'返回'Item' ,编译器无法知道它是圆形,边界还是光子。因此,“碰撞”方法必须采用“Item”参数。 – sp00m
我建议真正需要回答的问题是*为什么你需要首先使用不同版本的方法*? – JonK