오버라이딩과 오버로딩
- 오버라이딩(Overriding)
- 특징
- 성립조건
- 오버로딩(Overloading)
- 오버라이딩과 오버로딩
- final 예악어
- 대상에 따른 사용 가능한 제어자, 예약어
오버라이딩(Overriding)
오버라이딩 | - 자식 클래스가 상속 받은 부모 메소드를 재작성 하는것 - 부모가 제공하는 기능을 후손이 일부 고쳐 사용하겠다는 의미 - 자식 객체를 통한 실행시 후손 것이 우선권을 가짐 |
오버라이딩 특징 | - 메소드 헤드라인 위에 반드시 Annotation, @Override 표시 - 접근 제어자를 부모 것보다 같거나 넓은 범위로 변경 가능 - 부모 메소드의 예외처리 클래스 처리범위보다 좁은 범위로 예외처리 클래스 수정 가능 |
오버라이딩 성립조건 | 부모클래스의 메소드와 자식 클래스의 메소드 비교 - 메소드 이름 동일 - 매개변수의 개수, 타입 동일 - 리턴 타입 동일 - private 메소드 오버라이딩 불가 |
오버로딩(Overloading)
오버로딩 | - 한 클래스 내에서 같은 이름의 메소드를 여러 개 정의하는 것 |
성립조건 | - 같은 메소드 이름 - 다른 매개변수 선언부(매개변수 타입, 개수, 순서) |
주의 사항 | - 메소드의 리턴타입은 오버로딩 조건과 관계 없음 |
오버라이딩(Overriding)과 오버로딩(Overloading)
- | 오버라이딩(Overriding) | 오버로딩(Overloading) |
메소드 정의 | 하위클래스에서 정의 | 같은 클래스에서 정의 |
메소드 이름 | 동일 | 동일 |
매개변수(개수, 타입) | 동일 | 다름 |
리턴 타입 | 동일 | 상관 없음 |
접근 제어자 | 자식의 메소드 접근 범위가 부모 메소드의 접근 범위보다 넓거나 같아야함 |
접근 제어자와 상관 없음 |
예외 처리 | 자식 메소드의 예외 수가 부모 메소드의 예외 수보다 적거나 범위가 좁아야함 |
예외처리와 상관 없음 |
final 예약어
- 클래스
- 메소드
1. final 클래스
상속이 불가능한 클래스
public final class FinalClass{}
---------------
2. final 메소드
상속시 오버라이딩이 불가능한 메소드
public final void method() {}
대상에 따른 사용 가능한 제어자, 예약어
대상 | 사용 가능한 제어자/예약어 |
클래스 | public, (default), final, abstract |
메소드 | 모든 접근 제어자, final, abstract, static |
변수 | 모든 접근 제어자, final, static |
지역변수 | final |
유의사항 | - 클래스에 abstract와 final 동시에 사용 불가능 - 메소드에 static과 abstract 동시에 사용 불가능 - abstract 메소드의 접근제어자로 private 불가능 |
'Java > Java 개념' 카테고리의 다른 글
18. 예외처리 (0) | 2022.10.05 |
---|---|
17. 다형성(Polymorphism) (0) | 2022.10.04 |
15. 상속(Inherit) (0) | 2022.10.02 |
14. 객체 배열 (0) | 2022.10.02 |
13. 메소드(Method) (0) | 2022.10.02 |