Java:添加两个对象

Pav*_*vel 10 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;
Run Code Online (Sandbox Code Playgroud)

那可能吗?

App*_*ish 8

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

Imaginary i3 = i1.add(i2);
Run Code Online (Sandbox Code Playgroud)


lok*_*ath 6

Java没有运算符重载

例如,BigDecimal如果您可以编写a + b而不是a.add(b).

方式一

Imaginary i3 = i1.add(i2);
Run Code Online (Sandbox Code Playgroud)

方法:

public static Imaginary add(Imaginary i2)
{
    return new Imaginary(real + i2.real, imaginary + i2.imaginary);
}
Run Code Online (Sandbox Code Playgroud)

方式二

Imaginary i3 = add(i1, i2)
Run Code Online (Sandbox Code Playgroud)

方法:

public static Imaginary add(Imaginary i1, Imaginary i2)
{
    return new Imaginary(i1.real + i2.real, i1.imaginary + i2.imaginary);
}
Run Code Online (Sandbox Code Playgroud)

运算符重载肯定会使设计比没有它更复杂,并且它可能导致更复杂的编译器或减慢 JVM。


Cod*_*roc 5

试试这样.

Imaginary i3 =new Imaginary(i1.real+i2.real,i1.imaginary+i2.imaginary);
Run Code Online (Sandbox Code Playgroud)

如果要添加Object,可以创建添加方法.

public static Imaginary add(Imaginary i1,Imaginary i2)
{
return new Imaginary(i1.real+i2.real,i1.imaginary+i2.imaginary);
}
Run Code Online (Sandbox Code Playgroud)

并从此创建对象

Imaginary i3 =add(i1,i2);
Run Code Online (Sandbox Code Playgroud)