是否可以添加课程?

时间:2014-10-18 08:54:19

标签: java operator-keyword addition

我知道String是java.lang中的最后一个类,所以像string类一样可以使用plus(+)运算符追加其他类。

例如,我有一个班级:

 public class Foo{
    public int x;
    public int y;
    public Foo(int x,int y){
       this.x=x;
       this.y=y;
    }
    public Foo append(int x,int y){
       return new Foo(this.x+x,this.y+y);
    }
 }

现在,是否可以添加两个类:

 Foo a=new Foo(2,3),b=new Foo(3,4);
 Foo c=a+b;
 System.out.println(c.x+"  "+c.y);

获得如下输出:

 5  7

如果是,我还需要做什么,如果没有,为什么?

3 个答案:

答案 0 :(得分:5)

它被称为operator overloading而不是,它在Java中是不可能的。只允许使用经典方法。

答案 1 :(得分:2)

没有Java不允许运算符重载simply because it doesn't need it

  

2.2.7没有更多的操作员重载   程序员没有提供重载标准算术运算符的方法。再一次,通过声明一个类,适当的实例变量以及操纵这些变量的适当方法,可以很容易地实现运算符重载的效果。消除运算符重载可以极大地简化代码。

答案 2 :(得分:2)

'多年来,Java团队的部分内容是“运营商超载过于复杂”。这个以及许多其他人明显没有完成家庭作业的决定,这就是为什么我因为蔑视Gosling和Java团队的许多选择而声名鹊起 - 布鲁斯·埃克尔在The Positive Legacy of C++ and Java