질문 : 다음 코드를 수행하면 결과는?
1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class Temp {
public boolean equals( Temp other ) { System.out.println("Here is Temp equals method" ); return this == other; }
public static void main(String[] args) { Object o1 = new Temp(); Object o2 = new Temp();
Temp o3 = new Temp(); Temp o4 = new Temp();
if(o1.equals(o2)){ System.out.println("objects o1 and o2 are equal"); } else { System.out.println("objects o1 and o2 are not equal"); }
if(o3.equals(o4)){ System.out.println("objects o3 and o4 are equal"); } else { System.out.println("objects o3 and o4 are not equal"); } } } |
결과
1 2 3 | objects o1 and o2 are not equal Here is Temp equals method objects o3 and o4 are not equal |
해설
Temp 객체도 equals() 라는 메소드를 가지고 있고 Object 객체도 equals() 라는 메소드를 가지고 있다. 둘 다 return this == other; 하는 것은 동일한데 Temp 의 equals() 는 Here is Temp equals method 메세지 하나 더 찍어 주고 return 하도록 method 를 작성했다.
똑같이 new Temp() 했더라도 Type 이 Object 냐 Temp 냐에 따라서 수행되는 equals() 가 다르다는 것을 이해하면 된다.
이렇게 어느쪽 equals() 메소드를 사용할 지는 컴파일 타임에 컴파일러가 정해서 결정해 준다.
'컴퓨터활용 > java interview' 카테고리의 다른 글
String Compare equals Vs == (0) | 2013.01.06 |
---|