Overriding 규칙
1. static, final, private 메소드는 overriding할 수 없다.
- static 메소드를 자식 클래스에서 static 메소드로 다시 정의할 때는 method hiding이 일어난다.
2. 메소드 이름, 매개 변수 타입, 리턴 타입이 같아야 한다
3. 부모 클래스에서의 접근 제한보다 더 강할 수 없다.
4. 부모 클래스에서와 같거나 더 좁은 Exception을 발생할 수 있다.
Static Method Dispatch vs Dynamic Method Dispatch
(정적 바인딩, 동적 바인딩)
Static Method Dispatch
- 컴파일 시점에서 컴파일러가 어떤 특정 메소드를 호출할 지 정확히 알고 있는 것이다.
- 컴파일 코드에 이미 정보가 남아있다.
- 오버로딩된 메소드들은 서로 다른 메소드로 분류되기 때문에 이 경우에 해당한다.
Dynamic Method Dispatch (Runtime Polymorphism)
- 컴파일 시점에선 어떤 메소드가 호출될 지 모른다.
- 런타임 시점에 실제 호출될 메소드가 결정된다.
- 오버라이딩된 메소드를 호출할 경우에 해당한다.
https://codedragon.tistory.com/2522
'언어 > Java' 카테고리의 다른 글
Class 클래스 (0) | 2022.04.01 |
---|---|
String Constant Pool (0) | 2022.03.25 |
Integer.valueOf() vs Integer.parseInt() (0) | 2022.02.21 |
자바 기본 - 다형성 (0) | 2021.11.29 |
자바 기본 - 인터페이스 (0) | 2021.11.29 |
댓글