컴퓨터활용/java interview

method overloading Vs overriding

멜번초이 2013. 1. 6. 13:19

질문 : 다음 코드를 수행하면 결과는? 



1
2

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