Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 수퍼클래스의 final 메소드를 재정의하려고 하면 어떻게 될까요?

<시간/>

최종 으로 선언된 모든 메소드 슈퍼클래스에서 재정의할 수 없음 하위 클래스에 의해. 최종 방법을 재정의하려는 경우 상위 클래스의 경우 Java에서 오류가 발생합니다.

메서드 재정의 구현 규칙

  • 메소드 선언은 재정의할 메서드의 선언과 동일해야 합니다.
  • 클래스(하위 클래스)는 재정의를 시도하기 전에 다른 클래스(수퍼 클래스)를 확장해야 합니다.
  • 하위 클래스는 상위 클래스의 최종 메서드를 재정의할 수 없습니다.

예시

class Car {
   public void brake() {
      System.out.println("brake() method of Car");
   }
   public final void accelerate() {
      System.out.println("accelerate() method of Car");
   }
}
public class BenzCar extends Car {
   public static void main(String[] args) {
      BenzCar benz = new BenzCar();
      benz.accelerate();
      benz.brake();
   }
   public void accelerate() {
      System.out.println("accelerate() method of Benz Car");
   }
}

위의 예에서 최종 메소드(accelerate() 메소드) 를 재정의하려고 하면 수퍼클래스 . 컴파일러는 오류를 발생시킵니다. . 따라서 우리는 자바에서 슈퍼클래스의 최종 메소드를 오버라이드하지 않습니다.

출력

overridden method is final