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);
그러나 90 를 반환해야합니다 (클래스의 다른 포함) 기능
p1.sum(p2)
를 호출이 있다고, 내가 것을 배우고 (120) 을 반환 TriVal Object의 새 인스턴스를 만들 때 이전에 정의 된 p1 인스턴스가 어떻게 든 p2와 동일한 값으로 설정됩니다.이 값은 120이라는 합계를 설명합니다. 이 오류는 어딘가에 있습니다. n 내 생성자, 아마도 값을 업데이트하거나 클래스 상단에서 변수를 선언하는 방식으로? 유용한 팁이 있으면 감사하겠습니다. 감사합니다.
'static'키워드의 의미를 알고 있습니까? 네가 그렇게하지 않으면, 나는 그것을 찾는 것이 좋습니다. 인스턴스 변수가 아닌 정적 값 x를 변경하려고합니다. x – Orin
'x','y' 및'z'가'정적 '으로 선언 된 이유는 무엇입니까? 그게 네 문제 야. – JonK
[정적 키워드는 클래스에서 무엇을합니까?] 가능한 복제본 (영문) (http://stackoverflow.com/questions/413898/what-does-the-static-keyword-do-in-a-class) –