오버라이딩
- 하위 클래스가 부모 클래스의 기본적인 동작방법을 변경할 때 사용
-> 상위 클래스의 메소드를 추가하거나 변경하는 경우
▶︎ 상위 클래스
class Calculator {
int left, right;
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
}
Calculator 라는 클래스에서 sum 이라는 메소드를 실행하면 두개의 데이터를 더하는 구조다.
만약, 하위 클래스에서 sum 메소드에 기능을 추가하여 사용하고 싶을 경우 아래와 같이 Overriding 한다.
▶︎ 하위 클래스
class SubstractionableCalculator extends Calculator {
public void sum() {
System.out.println("실행 결과는 " +(this.left + this.right)+"입니다.");
}
sum 메소드에 실행결과에 대한 문장이 같이 출력되도록 변형된 것을 볼 수 있다.
이와 같이 하위 클래스에서 상속 받은 상위 클래스의 메소드를 변경할 때 오버라이딩을 사용하는데 몇가지 규칙이 존재한다.
1. 메소드 이름
- 부모 클래스의 메소드 이름과 오버라이딩된 메소드 이름이 동일해야 함.
2. 메소드 매개변수의 수와 데이터 타입
- 메소드 매개변수의 식이 같아야 함.
3. 메소드 리턴 타입
- 부모 클래스의 메소드와 오버라이딩된 메소드의 리턴 타입이 동일해야 함.