在Java中为自定义类定义+ =

时间:2016-01-15 22:25:23

标签: java operator-overloading

我正在制作一个简单的2D物理引擎,这是我第一次尝试制作任何类型的物理引擎。不幸的是,对于任何热爱物理教学的人来说,这不是一个与物理相关的问题。我只是想知道是否有一种方法可以定义像自定义类的添加这样简单的东西。例如,我创建了一个名为Vector2D的类。如果我有一个速度矢量和一个加速度矢量,那么最简单的就是拥有以下代码:

Vector2D velocity = new Vector2D(xAxisVelocity, yAxisVelocity);
Vector2D acceleration = new Vector2D(xAxisAcceleration, yAxisAcceleration);
void update() {
    velocity += acceleration;
}

但是,由于速度和加速度不是原始类型,所以我不能只将它们加在一起。根据我现在所知,我必须像以下一样添加它们的组件:

velocity.x += acceleration.x

..等等..

我想知道的是:有没有办法为类定义添加,类似于toString()如何被覆盖?

为了清理它,对我来说制作一个将两个向量加在一起的方法并不是什么大问题,我只是想知道是否可以覆盖。

2 个答案:

答案 0 :(得分:1)

不,Java中没有运算符重载。这是一个设计选择,这就是我们必须接受的。

有关详细讨论,请参阅Why doesn't Java offer operator overloading

答案 1 :(得分:1)

否 - Java中没有用户定义的运算符重载。 (这是故意的;语言设计者认为C ++的这个特性引起了太多问题。)