매서드 오버라이딩(Method Overriding)
- 부모가 이미 구현해 놓은 매서드를 대신하거나 추가 확장하는 것
- 즉, 자식 클래스에 부모 매서드와 동일한 매서드를 구현하는 것
- 부모 참조변수에 담아도 실제 자식 객체의 매서드를 호출하게 됨(편의성 > 일관성)
- 그러나, 부모 참조변수에서는 자식 객체의 매서드 호출 불가
- 장점: 매개변수를 최상위 부모변수로 매서드 1개만 만들면 된다 !!!!
- 부모(Generalization - 일반적), 자식(Realization - 구체적)
public class Speaker {
private int volumeRate;
void showCurrentState() {
System.out.println("볼륨 크기: +volumeRate");
}
void setVolume(int vol) {
volumeRate = vol;
}
public class BaseEnSpeaker extends Speaker {
private int baseRate;
// 부모의 기능에 추가(확장)
void showCurrentState() {
super.showCurrentState();
System.out.println("베이스 크기: "+baseRate);
}
// 부모 기능을 대신함(덮어쓰기)
void showCurrentState() {
System.out.println("베이스 크기: "+baseRate);
}
void setBaseRate(int base) {
baseRate = base;
}
public class OverridingMain {
public static void main(String[] args) {
BaseEnSpeaker base = new BaseEnSpeaker();
base.setVolume(10);
base.setBaseRate(20);
base.showCurrentState();
}
오버로딩(Overloading)과 오버라이딩(Overriding)의 차이
- Overloading(과적합) : 매개변수는 다른 같은 이름의 함수를 여러개 사용
- Overriding(Over + Riding) : 부모가 구현해 놓은 기능에 올라탐
'Programming > Java * Spring' 카테고리의 다른 글
[Java] 10. 인터페이스(Interface), 의존성 주입 (0) | 2019.03.28 |
---|---|
[Java] 09. 추상클래스(abstract) (0) | 2019.03.27 |
[Java] 07. Is Kind Of 관계, Has A 관계 (0) | 2019.03.26 |
[Java] 06. String, StringBuilder 속도 비교 (0) | 2019.03.25 |
[Java] 05. static 멤버의 접근 방법과 활용 (1) | 2019.03.20 |