Java:添加两个对象

我在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 没有运算符重载

例如,如果你可以写a + b而不是a.add(b) ,那么BigDecimal会更受欢迎。

方式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。

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

 Imaginary i3 = i1.add(i2); 

试试这样。

 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); } 

并从此创建对象

 Imaginary i3 =add(i1,i2); 

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

它看起来像:

 i3.addImaginary(i1, i2) 

但是由你决定如何定义函数,它也可以这样做:

 i3=i1.add(i2); 

Java不支持用户定义的运算符重载。 但是你可以在你的Imaginary类中创建一个方法:

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

所以,你可以称之为:

 Imaginary i3 = i1.add(i2);