오버라이딩이란?
재정의 = 새롭게 정의한다라는 뜻
상속과 아주 밀접한 관계가 있는 개념이다
상속이라하는 것은 기본적으로
부모클래스가 있고 자식 클래스가 있을 때
부모클래스에 있는 특정한 변수나 또는 메소드를
자식클래스가 그대로 마치 자식클래스에 정의 되어있는것처럼 사용할 수 있게 하면서
동시에 자식클래스에 어떤 특정한 메소드나 변수를 추가해서
기본적으로 부모클래스가 가지고 있는 기능보다 더 많은 기능을 제공한다.
이 것 말고도 자식 객체가 좀 더 가치있는 부품으로서 사용되기 위해서는
이 부모가 물려준 클래스 , 메소드 중에 어떤 메소드에 대해서는
자식클래스에서 그 기능을 덮어쓰기해서
자식클래스만의 독자적인 메소드를 정의해야되는 필요가 생길 때가 있다.
즉. 지금까지 우리가 살펴 본 상속은 부모클래스의 어떠한 기능을 더한다.
다시 말해서 부모 클래스가 갖고 있지않은 메소드를 추가한다는 측면에 대해서 살펴보았는데
오버라이딩이라고 하는 것은
부모가 갖고있는 메소드를 물려받긴했지만
그 부모가 갖고있는 메소드를 사용하지않고
자식클래스의 필요에 따라서
그 메소드를 재 정의해서 기능을 변경하는 방법이라는 것이다.
package day0407;
class Calculatori {
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);
}
public void avg() {
System.out.println((this.left + this.right) / 2);
}
}
class SubstractionableCalculatori extends Calculatori {
// 오버라이딩되는 부분
public void sum() {
System.out.println("실행 결과는" + (this.left + this.right) + "입니다.");
}
public void substract() {
System.out.println(this.left - this.right);
}
}
public class CalculatorDemo {
public static void main(String[] args) {
SubstractionableCalculatori c1 = new SubstractionableCalculatori();
c1.setOprands(10, 20);
c1.sum();//재정의가 되어 부모의 메소드가 아니는 자식클래스에서 재정의된 메소드가 실행
c1.avg();
c1.substract();
}
}
'PL(ProgrammingLanguage) > JAVA' 카테고리의 다른 글
프로그래밍 언어 - 자바 (0) | 2021.07.31 |
---|---|
오버라이딩의 조건 (0) | 2021.04.07 |
코드로 알아보는 상속 (0) | 2021.04.07 |
Method (0) | 2021.03.11 |
break와 continue(반복문의 제어) (0) | 2021.03.05 |