나는 더 오래된 시험에 관한 질문을 가지고 있으며, 나는 그 답을 알고 있어야 연습 할 수 있습니다.클래스 자체에 대한 정적 메서드입니까?
public class First{
private int num1 = 0;
private int num2 = 0;
private static int count = 0;
public First(int num){
this(num,num);
count++;
System.out.println("First constructor1");
}
public First(int num1, int num2){
this.num1 = num1;
this.num2 = num2;
count++;
System.out.println("First constructor2");
}
public int sum(){
return num1 + num2;
}
public static int getCount(){
return count;
}
}
이제 우리가 운영하는 다음과 같은 순서 :
1. First f1 = new First(10);
2. First f2 = new First(4,7);
3. System.out.println("sum1 = " + f1.sum());
4. System.out.println("count = " + First.getCount());
5. System.out.println("sum2 = " + f2.sum());
6. System.out.println("count = " + First.getCount());
내가 그 6 행 다음에 화면에 출력 될 라인을 작성해야
우리는 다음과 같은 클래스가 있습니다. 내가 처음 3 선 후에는 다음과 같이해야한다고 알고 선 # 4와 같은 라인의 의미는 무엇 나이 방해First constructor2
First constructor1
First constructor2
sum1 = 20
유일한 것은? 그것은 객체 대신 클래스 자체에서 작동하는 메소드입니까?
또 다른 질문은 부분 B에서 메소드가 작동하는 객체와 다른 객체를 비교할 수 있도록 'First'클래스 내에서 메소드 equals (Object를 확장하는 동일한 메소드)를 다시 정의해야한다는 것입니다. '첫 번째'유형의 개체. 이 메서드는 num1, num2가 모두 같으면 true를 반환합니다.
public class First {
...
...
.
.
.
public boolean equals (First anotherObj){
if ((First.num1 == anotherObj.num1) && (First.num2 == anotherObj.num2))
return true;
return false;
} // equals
} // 'First' class
내가 맞죠 :
나는 이런 식으로 뭔가에 대해 생각?
1. 작성한 equals 메서드에 대해 설명해 주시겠습니까? 2. 왜 hashCode()도 재정의해야합니까? thx – Adam
equals() 및 hashCode()의 관계는 다음에서 설명합니다. http://stackoverflow.com/questions/27581/overriding-equals-and-hashcode-in-java – bibac
equals 메서드는 지정된 조건의 true를 반환합니다. 사실이다. method 매개 변수에서 getter를 호출하려면 유형에 유형을 캐스팅해야합니다. 먼저. 재정의하는 메서드는 Object를 매개 변수로 정의하고 Object는 특정 메서드/Getter에 대해 알지 못합니다. 따라서 우리는 현재 객체 (equals 메소드를 포함하고 있습니다)와 메소드에서 주어진 객체의 getNum1() 값을 비교합니다. num1 == num1 && num2 == num2 == true. 표현식이 이미 true/false를 반환하기 때문에 메서드에 "if"가 필요하지 않습니다. – bibac