我在Greenfoot中创建一个项目,并创建了一个假想的数字类。在我的项目中,我发现需要将两个虚构的对象加(或减,或其他方式),是否有办法像这样添加两个对象?因此,这就是在完美世界中的样子:

    Imaginary i1 = new Imaginary(1.7,3.14);
    Imaginary i2 = new Imaginary(5.3,9.1);
    //the class Imaginary has parameters (double real, double imaginary)
    Imaginary i3 = i1+i2;

那可能吗?

最佳答案

Java的没有运算符重载

例如,如果可以编写BigDecimal而不是a + ba.add(b)将会流行得多。

方式1

Imaginary i3 = i1.add(i2);

方法:
public static Imaginary add(Imaginary i2)
{
    return new Imaginary(real + i2.real, imaginary + i2.imaginary);
}

方法2
Imaginary i3 = add(i1, i2)

方法:
public static Imaginary add(Imaginary i1, Imaginary i2)
{
    return new Imaginary(i1.real + i2.real, i1.imaginary + i2.imaginary);
}

运算符重载肯定会使设计更复杂,而如果没有它,可能会导致编译器更复杂或JVM变慢。

07-28 14:17