我在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;
这可能吗?
答案 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);
}
从此
创建ObjectImaginary i3 =add(i1,i2);
答案 2 :(得分:4)
Java 无操作符重载。
例如,如果您可以写BigDecimal
而不是a + b
,a.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);