Whiteship's Note

Hiding Method

Java : 2006.12.31 11:47


overriding에 대해 정리를 하다가 java toturial에 있던 hiding 관련 부분을 보게 됐습니다. 이 부분도 오버라이딩과 헷갈릴 여지가 있어서 정리를 해둡니다.

클래스 메소드[각주:1]의 경우 하위 타입의 메소드가 상위 타입의 메소드의 시그네쳐와 동일 하더라도 오버라이딩이 아닙니다.

클래스 단위로 가지고 있는 메소드이기 때문에 메소드의 서명이 같더라도 메소드가 정적으로(static) 결정되어 버리기 때문에 오버라이딩이 될 수 없습니다. 오버라이딩 되려면 동적 바인딩이 되어야 하는데 static이기 때문에 그럴 수 없는 것 같네요.

튜토리얼에 있는 예제 코드를 보겠습니다.

more..


녹색 메소드는 Hiding, 주황색 메소드는 Overriding입니다. Hiding이라고 하는 이유는 오버라이딩 하는 메소드를 숨긴다는 의미로 그렇게 지은것 같습니다. 클래스 타입으로 결정이 되기 때문에 분홍색 부분에서는 Animal의 메소드가 호출 될 것이며 보라색 부분에서는 Cat에 있는 메소드가 호출될 것입니다.

결과는 아래와 같습니다.
The class method in Animal.
The instance method in Cat.

Overring이 긴지 아닌지 확인하기 위해서는 @Override를 붙여보면 됩니다.
사용자 삽입 이미지
역시 이클립스가 "이건 오버라이딩이 아닌데~" 이러는게 보입니다.
하지만 컴파일 에러는 발생하지 않습니다.

두개의 글로 살펴본 Overriding and Hinding Methods의 Summary부분에 나와있는 그림입니다.
사용자 삽입 이미지

  1. static scope의 메소드 [본문으로]

'Java' 카테고리의 다른 글

Generics  (2) 2007.01.17
Eclipse 단축키 모음  (6) 2007.01.11
Generic과 다형성 2탄  (4) 2007.01.05
Generic과 다형성  (0) 2007.01.05
자바 검은 띠에 도전해 보시길~  (2) 2006.12.31
Hiding Method  (0) 2006.12.31
Overriding - covariant return type  (6) 2006.12.31
LinkedList vs ArrayList  (6) 2006.12.22
Agile Java 소스코드(10장까지..)  (8) 2006.12.21
Reflection  (0) 2006.12.19
... 가변인수(varargs)  (2) 2006.12.11
top

TAG



: 1 : ··· : 95 : 96 : 97 : 98 : 99 : 100 : 101 : 102 : 103 : ··· : 140 :