Java:添加两个对象

时间:2014-04-20 04:20:27

标签: java object

我在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;

这可能吗?

5 个答案:

答案 0 :(得分:8)

您所描述的内容称为"运算符重载"并且它不能用Java完成(至少是由你和我这样的程序员完成;开发人员可以自由地执行此操作并使用String类完成此操作)。相反,您可以创建add方法并调用:

Imaginary i3 = i1.add(i2);

答案 1 :(得分:5)

尝试这样。

Imaginary i3 =new Imaginary(i1.real+i2.real,i1.imaginary+i2.imaginary);

如果您想添加Object,可以创建添加方法。

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

从此

创建Object
Imaginary i3 =add(i1,i2);

答案 2 :(得分:4)

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。

答案 3 :(得分:3)

可以在C ++中,但不能在Java中定义一个函数addImaginary(Imaginary, Imaginary),它将添加两个Imaginarys并将它们存储在对象中,称为方法。

看起来像:

i3.addImaginary(i1, i2)

但是由你决定如何定义函数,它也可以完成:

i3=i1.add(i2);

答案 4 :(得分:3)

Java doesn't support user-defined operator overloading.但您可以在Imaginary课程中创建一个方法:

public static Imaginary add(Imaginary other) {
    return new Imaginary(real + other.real, imaginary + other.imaginary);
}

所以,你可以这样称呼它:

Imaginary i3 = i1.add(i2);