backend

@Override 어노테이션에 대해서 알아보자

KUKJIN LEE
KUKJIN LEE
2024년 9월 6일
131

주로 부모 클래스(또는 인터페이스)의 메서드를 자식 클래스에서 재정의할 때, 코드의 가독성을 높이고 컴파일러에게 의도를 명확하게 전달하기 위해 사용됩니다.

 

1. @Override의 역할

  1. 부모 클래스의 메서드를 재정의(Override)할 때 사용

    • 자식 클래스에서 부모 클래스의 메서드를 동일한 시그니처(메서드명, 매개변수, 리턴 타입)로 재정의할 때 사용합니다.

  2. 오버라이딩 여부를 컴파일러에게 명확히 알림

    • @Override를 사용함으로써, 컴파일러가 이 메서드가 부모 클래스나 인터페이스에 있는 메서드를 올바르게 오버라이딩하고 있는지 확인합니다. 만약 오버라이딩에 오류가 있으면 컴파일 시점에 에러를 발생시킵니다.

  3. 가독성 및 유지보수성 증가

    • 코드를 읽는 개발자가 해당 메서드가 부모 클래스의 메서드를 오버라이딩한 것임을 쉽게 알 수 있습니다. 이는 협업 시에도 유용합니다.

 

2. 사용 예시

class Animal {
    public void sound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("개가 짖습니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.sound();  // "개가 짖습니다." 출력
    }
}
Dog 클래스는 Animal 클래스의 sound() 메서드를 오버라이딩하고 있습니다. @Override 애노테이션은 Dog 클래스의 sound() 메서드가 부모 클래스의 sound() 메서드를 올바르게 재정의하고 있음을 표시합니다.
 

3. @Override의 장점

  • 오타 방지: 만약 메서드 이름을 잘못 입력했거나, 매개변수나 리턴 타입이 부모 클래스의 메서드와 일치하지 않는 경우 컴파일 시점에서 에러를 발생시켜 실수를 방지할 수 있습니다.

class Animal {
    public void sound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

class Dog extends Animal {
    @Override
    public void snd() {  // 오타가 있을 경우
        System.out.println("개가 짖습니다.");
    }
}
 Dog 클래스는 부모 클래스 Animalsound() 메서드를 오버라이딩하려고 했습니다. 그러나 자식 클래스에서 메서드 이름을 snd()로 잘못 작성하여, 부모 클래스의 메서드를 정확하게 오버라이딩하지 못했습니다. 이로 인해 컴파일러는 @Override 어노테이션을 보고, 부모 클래스에 snd()라는 메서드가 존재하지 않기 때문에 컴파일 에러를 발생시킵니다.
 

4. @Override 어노테이션을 사용할 수 있는 곳

  1. 부모 클래스의 메서드 오버라이딩: 자식 클래스에서 부모 클래스의 메서드를 재정의할 때 사용.

  2. 인터페이스 구현: 클래스가 인터페이스의 메서드를 구현할 때도 사용할 수 있습니다.

interface Animal {
    void sound();
}

class Dog implements Animal {
    @Override
    public void sound() {
        System.out.println("개가 짖습니다.");
    }
}
 

5. 결론

@Override는 자바에서 부모 클래스나 인터페이스의 메서드를 오버라이딩할 때 사용되는 어노테이션으로, 코드의 가독성을 높이고 컴파일러가 올바르게 오버라이딩하고 있는지 확인하는 데 도움을 줍니다. 이를 통해 실수를 방지하고 코드의 유지보수성을 향상시킬 수 있습니다.

 
#@Overide#override 어노테이션#@Override 쓰는 이유#@Override 자바#@Override 생략#자바 @Override 의미#자바 @Override