Programming/Java * Spring
[Java] 08. 매서드 오버라이딩(Method Overriding), 오버로딩과의 차이
by 고막고막
2019. 3. 26.
매서드 오버라이딩(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) : 부모가 구현해 놓은 기능에 올라탐