반응형
정의
메소드 오버라이딩(method overriding) 정의
- 상위 클래스의 동일한 메소드를 하위 클래스에서 다시 정의(코드를 다시 구현)
- 메소드 재정의(method refefinition)
- 또는 매소드 대체(method replacement)라고 표현
메소드 오버라이딩의 목적
- 상위 클래스에서 이미 정의한 메소드를 다시 수정하지 않고
- 하위 클래스에서 좀 더 보완·수정하거나
- 완전히 새로운 것으로 대체하기 위한 방법
조건
- 메소드의 반환 값과 메소드 이름, 매개변수는 반드시 같아야 함
- 접근 지정자는 하위 클래스의 메소드가 보다 공개적
- 상위 클래스의 메소드가 public이면, 오버라이딩 되는 메소드는 public에서만 가능
- 상위 클래스의 메소드가 protected이면, 하위 메소드는 public, protected만 가능
- 상위 클래스의 메소드가 default이면, 하위 메소드는 public, protected, default만 가능
- 메소드 수정자가 final, private인 메소드는 오버라이딩 불가
오버라이딩 예제 (1)
오버라이딩 예제 (2)
final
클래스 앞의 final
- 클래스를 더 이상 상속할 수 없음을 의미하는 키워드
메소드 반환형 앞의 지정자 final
- 하위 클래스에서 더 이상 메소드 오버라이딩을 허용하지 않음을 의미하는 키워드
동적 바인딩
- 오바라이딩 메소드 - 가장 하위 객체의 메소드 실행
메소드 오버로딩
- 클래스 내부에서 인자가 다르나 이름이 같은 메소드가 여러 개 정의된 경우
- 반환값은 다를 수 있지만, 인자가 같을 수는 없음
정적 메소드의 오버로딩
- 오버로딩의 경우 메소드와 정적 메소드는 무관
- 정적메소드의 오버로딩은 이름이 같고 매개변수(파라미터)가 다르면 가능
- 정적 메소드의 경우 클래스 내부에 소속된 변수들에 접근 불가
- 정적 메소드 내부에서 this, super 사용 불가
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 3-5. 인터페이스 (0) | 2022.01.26 |
---|---|
[Zero-base] 3-4. 추상 클래스 (0) | 2022.01.26 |
[Zero-base] 3-2. 다형성 (0) | 2022.01.26 |
[Zero-base] 3주차 과제 (CoordinateCompare.java) (0) | 2022.01.25 |
[Zero-base] 3-1. 상속 (0) | 2022.01.23 |