다음은 메서드를 적절하게 재정의할 때 고려해야 할 규칙입니다. −
- 인수 목록은 재정의된 메서드의 인수 목록과 정확히 동일해야 합니다.
- 반환 유형은 슈퍼클래스의 재정의된 원래 메서드에 선언된 반환 유형과 같거나 하위 유형이어야 합니다.
- 액세스 수준은 재정의된 메서드의 액세스 수준보다 더 제한적일 수 없습니다. 예:슈퍼클래스 메소드가 public으로 선언된 경우 하위 클래스의 재정의 메소드는 private이거나 protected일 수 없습니다.
- 인스턴스 메서드는 하위 클래스에서 상속된 경우에만 재정의할 수 있습니다.
- 최종으로 선언된 메소드는 재정의할 수 없습니다.
- 정적으로 선언된 메서드는 재정의할 수 없지만 다시 선언할 수 있습니다.
- 메소드를 상속할 수 없으면 재정의할 수 없습니다.
- 인스턴스의 슈퍼클래스와 동일한 패키지 내의 서브클래스는 private 또는 final로 선언되지 않은 슈퍼클래스 메서드를 재정의할 수 있습니다.
- 다른 패키지의 하위 클래스는 public 또는 protected로 선언된 최종이 아닌 메서드만 재정의할 수 있습니다.
- 재정의 메서드는 재정의된 메서드가 예외를 throw하는지 여부에 관계없이 확인되지 않은 예외를 throw할 수 있습니다. 그러나 재정의하는 메서드는 재정의된 메서드에 의해 선언된 것보다 새롭거나 더 광범위한 확인된 예외를 throw해서는 안 됩니다. 재정의 메서드는 재정의된 메서드보다 더 좁거나 더 적은 예외를 throw할 수 있습니다.
- 생성자는 재정의할 수 없습니다.