@Override 오버라이딩이란?

heeo·2023년 7월 2일

Java

목록 보기
4/4

오버라이딩이란?

상속에서 부모 클래스가 갖고 있는 메서드를 자식 클래스가 재정의(올라타다, 덮어쓰다) 하는 것

Cal 이라는 부모 클래스가 있고, Cal2 라는 자식 클래스가 있습니다.

class Cal {
    public int sum(int n1, int n2) {
        return n1+n2;
    }
}

class Cal2 extends Cal {
    public int minus(int n1, int n2) {
        return n1-n2;
    }
}

Cal2 에서 Cal 에 있는 sum() 메서드를 재정의하는 걸 오버라이딩이라고 합니다.

class Cal2 extends Cal {
    public int minus(int n1, int n2) {
        return n1-n2;
    }
    @Override
    public int sum(int n1, int n2) {
        System.out.println("Cal2에서 부모 메서드 수정함");
        return n1+n2;
    }
}

public class _08_Inheritance {
    public static void main(String[] args) {
        Cal c = new Cal();
        System.out.println(c.sum(1,2));  // 3

        Cal2 c2 = new Cal2();
        System.out.println(c2.minus(7,2));  // 5
        System.out.println(c2.sum(1,2));  // Cal2에서 부모 메서드 수정함 3
    }
}

오버라이딩을 구현하려면 @Override를 꼭 적어야 하나요?

@Override 는 해당 메서드가 부모 클래스에 있는 메서드를 Override 했다는 것을 명시적으로 선언합니다.
만약 @Override 를 적지 않는다면 자식 클래스에 여러 개의 메서드가 있을 경우, 어떤 메서드가 Override 됐는지 쉽게 알기 어렵기 때문에 적어주는 것이 좋습니다.


오버라이딩을 하기 위해선 부모 클래스에 있는 메서드명과 매개변수가 동일해야 합니다. 그런데 제대로 오버라이딩 했다고 생각했는데 매개변수를 잘못 적는다거나 실수할 수도 있습니다. 이럴 때 @Override 를 적어놓으면 "이 메서드는 Override 된 거야" 라고 컴파일러에게 알려 컴파일 시 체크할 수 있습니다.

profile
Hello, World!

0개의 댓글