오버라이딩, 오버로딩
2021. 9. 23. 23:54ㆍJava
반응형
Overriding
자식 클래스가 상속 받은 부모 메소드를 재정의
메소드 헤드라인 위에 반드시 Annotation, @Override 표시
접근 제어자는 부모보다 더 좁은 범위 변경 불가
부모 메소드의 예외처리 클래스 처리범위보다 더 큰 범위의 예외 선언 불가
오버라이딩 조건
- 부모와 자식의 메소드 이름 동일
- 메소드 매개변수의 갯수와 데이터 타입 그리고 순서 동일
- 메소드의 리턴 타입 동일
부모와 자식의 코드가 중복(같은 로직)될 경우 중복은 제거되어야만 함
이럴 경우 자식이 부모의 메소드를 호출하기 위해 super 사용하여 중복 제거
Overloading
같은 클래스 내에서 같은 이름의 메소드를 여러 개 정의
오버로딩 조건
- 같은 메소드 이름
- 다른 매개변수(타입, 개수, 순서)
- 리턴타입이 달라도 오버로딩 불가
오버라이딩(Overriding) | 오버로딩(Overloading) |
자식 클래스에서 메소드 정의 | 같은 클래스 내에서나 상속 관계서 메소드 정의 |
메소드 이름, 매개변수(개수, 타입, 순서), 리턴 타입 동일 | 메소드 이름 동일, 매개변수(개수, 타입, 순서) 다름, 리턴타입 무관 |
동적 바인딩. 실행 시간에 오버라이딩된 메소드 찾아 호출 | 정적 바인딩. 컴파일 시에 중복된 메소드 중 호출되는 메소드 결정 |
자식 메소드의 예외 처리가 부모보다 더 큰 범위 선언 불가 | 예외처리 상관 없음 |
반응형
'Java' 카테고리의 다른 글
abstract / final / interface (0) | 2021.10.12 |
---|---|
캡슐화, setter과 getter메소드 (0) | 2021.09.28 |
상속, super과 super() (0) | 2021.09.17 |
클래스, 인스턴스와 객체 (0) | 2021.09.15 |
public static void main (String[] args) (0) | 2021.09.14 |