쉽게 배우는 자바 프로그래밍(우종정) 프로그래밍 문제 풀이 4장 - 5번
2019. 12. 4. 18:11ㆍ쉽게 배우는 자바 프로그래밍
class Line {
private int length;
public Line(int length) {
this.length = length;
}
public boolean isSameLine (Line line1) {
if (length == line1.length)
return true;
else
return false;
}
}
public class LineTest {
public static void main(String[] args) {
Line a = new Line(1);
Line b = new Line(1);
System.out.println(a.isSameLine(b));
System.out.println(a == b);
}
}
4번 문제에서 == 와 equals를 구글링해봤는 데
5번 문제가 비슷했다!
==는 각 객체를 비교한 것이서서 false가 나온 것 같다.
그치 두 객체가 완전히 같다고 할 순 없으니..
근데 equals를 써도 false가 나왔다
왜인지.. 검색해보니 Object가 가진 equals는 단순히 참조변수만을 비교하는데, 오버라이딩을 하지 않아 Object의 equals가 실행되어 false가 나온것이고, true가 나오려면 오버라이딩을 해야한다
오버라이딩.. 아직 상세하게는 안 배웠지만... 구글링과 교재 뒷부분의 힘으로!
class Line {
private int length;
public Line(int length) {
this.length = length;
}
public boolean isSameLine (Line line1) {
if (length == line1.length)
return true;
else
return false;
}
@Override
public boolean equals(Object obj){
Line t = (Line)obj;
boolean ret = t.length == this.length;
return ret;
}
}
public class LineTest {
public static void main(String[] args) {
Line a = new Line(1);
Line b = new Line(1);
System.out.println(a.isSameLine(b));
System.out.println(a.equals(b));
System.out.println(a == b);
}
}
이러면 true, true, false 순으로 나온다.
'쉽게 배우는 자바 프로그래밍' 카테고리의 다른 글
쉽게 배우는 자바 프로그래밍(우종정) 프로그래밍 문제 풀이 4장 - 7번 (0) | 2019.12.04 |
---|---|
쉽게 배우는 자바 프로그래밍(우종정) 프로그래밍 문제 풀이 4장 - 6번 (0) | 2019.12.04 |
쉽게 배우는 자바 프로그래밍(우종정) 프로그래밍 문제 풀이 4장 - 4번 (0) | 2019.12.04 |
쉽게 배우는 자바 프로그래밍(우종정) 프로그래밍 문제 풀이 4장 - 3번 (0) | 2019.12.03 |
쉽게 배우는 자바 프로그래밍(우종정) 프로그래밍 문제 풀이 4장 - 2번 (0) | 2019.12.03 |