본문 바로가기

JAVA/기초다지기

overriding

오버라이딩이란?

 

재정의 = 새롭게 정의한다라는 뜻

 

상속과 아주 밀접한 관계가 있는 개념이다


 

상속이라하는 것은 기본적으로

부모클래스가 있고 자식 클래스가 있을 때

부모클래스에 있는 특정한 변수나 또는 메소드를

자식클래스가 그대로 마치 자식클래스에 정의 되어있는것처럼 사용할 수 있게 하면서 

 

동시에 자식클래스에 어떤 특정한 메소드나 변수를 추가해서 

기본적으로 부모클래스가 가지고 있는 기능보다 더 많은 기능을 제공한다.

 

이 것 말고도 자식 객체가 좀 더 가치있는 부품으로서 사용되기 위해서는 

이 부모가 물려준 클래스 , 메소드 중에 어떤 메소드에 대해서는 

자식클래스에서 그 기능을 덮어쓰기해서

자식클래스만의 독자적인 메소드를 정의해야되는 필요가  생길 때가 있다.

 

즉. 지금까지 우리가 살펴 본 상속은 부모클래스의 어떠한 기능을 더한다.

다시 말해서 부모 클래스가 갖고 있지않은 메소드를 추가한다는 측면에 대해서 살펴보았는데


 

오버라이딩이라고 하는 것은 

 

부모가 갖고있는 메소드를 물려받긴했지만

그 부모가 갖고있는 메소드를 사용하지않고

자식클래스의 필요에 따라서

그 메소드를 재 정의해서 기능을 변경하는 방법이라는 것이다.


 

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();
    }
}

'JAVA > 기초다지기' 카테고리의 다른 글

String 클래스 - 메소드  (0) 2021.10.21
오버라이딩의 조건  (0) 2021.04.07
코드로 알아보는 상속  (0) 2021.04.07
Method  (0) 2021.03.11
break와 continue(반복문의 제어)  (0) 2021.03.05