- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设计一个物理模拟器,其中包含 3 种可以碰撞的物体。
最基本的[抽象]类称为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)
方法。
如何才能满足编译器的要求,同时仍然使用继承方式以不同的方式处理不同类型的冲突?
最佳答案
您应该为每个子类重写collide(Item i)
。您可以检查每个实现中的 item
类型,例如,在您的 Photon
类中:
@Override
public void collide(Item item) {
if (item instanceof Photon) {
// implement collision of this with (Photon) item
} else if ... {
// I wonder how collision of Photon with Circle would look like :)
}
}
这与覆盖对象的 equals 非常相似。新类型的方法。
关于java - 多态性重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939803/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!