오버라이딩
- 부모Class에서 정의한 메서드를 자식 Class에서 변경하는 것 (메소드 재정의)
ex) 상속관계에 있는 부모클래스 A와 자식클래스 B사이에서 부모클래스 A가 C메서드를 가질때 B는 자연스럽게 A클래스의 메서드 C를 상속받게 된다. 하지만 이는 자식클래스 B사이에서 원하는 기능이 아닐 때 오버라이딩을 통해 자식클래스 B에서 한번더 메소드 C를 정의하여 자식클래스 B만에서의 메서드 C를 가지는것 (= 덮어쓰기)
사용 시 조건
- 부모클래스의 메서드랑 메서드이름이 같던가 매개변수, 리턴타입이 같아야 함
- 자식클래스의 접근 지시 제어자는 부모클래스의 것보다 넓거나 같아야함
- 예외는 부모의 클래스의 메소드 보다 많이 선언 불가능
* Static 메서드는 오버라이딩 허용 X -> 클래스에 속하는 메소드이기 때문
오버로딩
- 같은 클래스 내에서 같은 이름의 메서드를 사용하는 것 ( 오로지 매개변수 차이로만 구현 )
사용 시 조건
- 매개변수 타입이 달라야 한다.
- 매개변수 개수가 달라야 한다.
* 둘중 하나만 만족해도 사용가능
오버라이딩 VS 오버로딩
오버라이딩 | 오버로딩 | |
접근제어자 | 부모 클래스의 메소드의 접근제어자보다 같거나 더 넓은 범위의 접근 제어자를 자식 클래스 메소드에서 설정 가능 | 모든 접근 제어자 사용가능 |
리턴형 | 동일해야 함 | 달라도 됨 |
메소드명 | 동일해야 함 | 동일해야함 |
매개변수 | 동일해야 함 | 달라야 함 |
적용 범위 | 상속관계에서 적용 | 같은 클래스 내에서 적용 |
- 오버라이딩이 상속받은 메서드의 내용을 변경하는 것이라면 오버로딩은 기존에 없는 새로운 매서드를 정의하는 것!
[ 참고 ]
https://ucong-9796.tistory.com/33
'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글
지역변수 VS 전역변수 (0) | 2021.05.31 |
---|---|
접근제한자 (0) | 2021.05.31 |
추상클래스 VS 인터페이스 (0) | 2021.05.29 |
인터페이스란? (0) | 2021.05.29 |
추상클래스란? (0) | 2021.05.29 |