Java에서 @Override

Rupam Yadav 2023년10월12일
  1. Java에서 오버로딩과 오버로딩의 차이점
  2. Java의@Override주석
Java에서 @Override

이 가이드에서는 Java의 @override주석 및 재정의 주제에 대해 자세히 알아 봅니다. 재정의는 자식 클래스가 부모 클래스와 동일한 메서드를 갖는 개념입니다. 이 개념은 런타임 다형성의 예입니다.

Java에서 오버로딩과 오버로딩의 차이점

재정의는 종종 오버로딩이라는 또 다른 유사한 용어와 혼동됩니다. 더 진행하기 전에 다음 표에서 이들 간의 중요한 차이점을 살펴 보겠습니다.

메서드 재정의 메서드 오버로딩
메서드는 이름과 서명이 동일해야합니다. 메서드는 이름은 같지만 서명이 달라야합니다.
런타임 다형성의 예입니다. 컴파일 타임 다형성의 예입니다.
모든 메소드의 반환 유형은 동일해야합니다. 반환 유형은 같을 수도 있고 같지 않을 수도 있습니다.
두 개 이상의 클래스간에 재정의가 발생합니다. 같은 클래스에서 오버로딩이 발생합니다.
매개 변수는 동일해야합니다. 매개 변수는 달라야합니다.

Java의@Override주석

@Override주석은 Java 컴파일러에게 수퍼 클래스의 메소드를 대체하려고 함을 알려줍니다. 프로세스에 구현할 때마다@Override를 사용할 필요는 없지만 메서드를 만들 때 실수를 할 수 있으므로 사용하는 것이 좋습니다. 예를 들어 자식 클래스에 다른 매개 변수를 제공하여 재정의하는 대신 오버로딩 할 수 있습니다.

실수를 극복하기 위해 컴파일러에게 메서드를 재정의 할 것임을 알려주는 자식 클래스의 메서드 이름 위에@Override를 사용합니다. 실수하면 컴파일러에서 오류가 발생합니다.

아래 예에는 4 개의 클래스가 있습니다. OverrideJava클래스는main()메소드가있는 곳이며 다른 클래스의 메소드가 해당 객체를 사용하여 호출되는 곳입니다. 그런 다음FirstClass에 인쇄 메시지가있는method1()이라는 메서드가있는 세 개의 다른 클래스가 있습니다. 마지막으로SecondClass클래스는 상속 개념을 사용하는FirstClass를 확장합니다. 여기서는FirstClass와 같은 상위 클래스와 동일한 메소드 이름과 서명method1()을 사용합니다.

SecondClass클래스에서@Override주석을 사용합니다. 다음으로ThirdClass클래스에서SecondClass를 확장하고 주석과 함께method1()메소드를 사용합니다. 어떤 메서드가 호출되는지 확인하기 위해 자식 클래스 인ThirdClass의 객체를 만들고method1()을 호출합니다. 출력에서ThirdClass내부 메소드가 호출되는 것을 관찰합니다. 이는 하위가 상위 이후 내부 구현을 변경했기 때문입니다.

public class OverrideJava {
  public static void main(String[] args) {
    ThirdClass thirdClass = new ThirdClass();
    thirdClass.method1();
  }
}

class ThirdClass extends SecondClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Third Class");
  }
}

class SecondClass extends FirstClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Second Class");
  }
}

class FirstClass {
  void method1() {
    System.out.println("This is method1");
  }
}

출력:

Overriding method1 in Third Class

자식 클래스 대신 부모 클래스의method1()을 호출하려면 수퍼 클래스의method1()을 호출하는super.method1()을 사용할 수 있습니다. 출력은 먼저ThirdClass내부에서SecondClass의메소드 인 상위 클래스가 호출 된 다음 자체 구현이 호출됨을 보여줍니다.

public class OverrideJava {
  public static void main(String[] args) {
    ThirdClass thirdClass = new ThirdClass();
    thirdClass.method1();
  }
}

class ThirdClass extends SecondClass {
  @Override
  void method1() {
    super.method1();
    System.out.println("Overriding method1 in Third Class");
  }
}

class SecondClass extends FirstClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Second Class");
  }
}

class FirstClass {
  void method1() {
    System.out.println("This is method1");
  }
}

출력:

Overriding method1 in Second Class
Overriding method1 in Third Class
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn