将对象的新实例设置为相同的值

时间:2017-03-17 16:45:31

标签: java object instance

public class TriVal {

private static int x;
private static int y;
private static int z;

TriVal(int x, int y, int z) {
    TriVal.x = x;
    TriVal.y = y;
    TriVal.z = z;

    }
 public int sum(TriVal p2) {
    int a = Math.abs(TriVal.x + p2.x);
    int b = Math.abs(TriVal.y + p2.y);
    int c = Math.abs(TriVal.z + p3.z);
    int sum = a + b + c;
    return sum;
    }
}

这是一个包含一组3个值的对象的构造函数。 但是,我正在编写一个函数,通过对此对象的两个实例的x,y和z求和来创建一个新的TriVal。

所以说我们有

    TriVal p1 = new TriVal(10, 10, 10);
    TriVal p2 = new TriVal(20, 20, 20);

调用函数

 p1.sum(p2)

(其中包括在课堂的其他地方)应该返回90。 但是,它返回120。 我正在学习在创建TriVal对象的新实例时,先前定义的p1实例以某种方式被设置为与p2相同的值,这解释了总和为120。 我相信这个错误位于我的构造函数中的某个位置,可能是我更新值或在类顶部声明变量的方式? 任何有用的提示将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

private static int x;
private static int y;
private static int z;

您将实例成员声明为静态,对于所有实例都是相同的。它们存储最后指定的值。删除静电,你会没事的。

正如@Orin指出的那样,您需要更改代码,以便将参数绑定到实例成员。