하위 클래스에서 재정의된 메서드의 액세스 한정자는 동일하거나 더 넓어야 합니다. 하위 클래스 메서드의 액세스 권한은 상위 클래스 메서드의 액세스 권한보다 넓을 수 있습니다(예: protected에서 public으로 변경). 하위 클래스 메서드는 상위 클래스 메서드보다 더 제한된 액세스 권한을 가질 수 없습니다(예: 공개에서 보호로).
Java 함수 액세스 수정자와 메소드 재정의의 영향
액세스 수정자는 Java 메소드의 접근성을 제어합니다. 4가지 유형이 있습니다:
상위 클래스의 메서드를 재정의하는 경우 하위 클래스의 재정의된 메서드에는 동일하거나 더 넓은 액세스 한정자가 있어야 합니다. 이는 재정의된 메서드가 부모 클래스 메서드를 기반으로 하기 때문에 부모 클래스 메서드보다 더 제한될 수 없기 때문입니다.
실용 사례
다음은 상위 클래스입니다.
public class Parent { protected void show() { System.out.println("Parent class show()"); } }
이제 상위 클래스의 show()
메서드를 재정의하는 다음 하위 클래스를 고려해 보세요. show()
메서드의 액세스 한정자가 protected
에서 public
으로 변경되었습니다. show()
方法。注意 show()
方法的访问权限修饰符是从 protected
更改为 public
:
public class Child extends Parent { @Override public void show() { System.out.println("Child class show()"); } }
由于父类的 show()
方法是 protected
的,子类的 show()
方法也必须是 protected
或 public
。将其设置为 public
符合方法重写的要求,因为它具有比父类方法更宽的访问权限。
运行这两个类将打印以下输出:
Child class show()
这是因为 Child
类中的重写方法被调用,因为它具有更宽的访问权限(public
rrreee
로 인해 show( )
메서드는 protected
이고 하위 클래스의 show()
메서드도 protected
또는 public
이어야 합니다. 코드> >. public
으로 설정하면 상위 클래스 메서드보다 액세스 범위가 더 넓기 때문에 메서드 재정의로 간주됩니다. 🎜🎜이 두 클래스를 실행하면 다음 출력이 인쇄됩니다. 🎜rrreee🎜이는 Child
클래스의 재정의된 메서드가 더 넓은 액세스 권한을 갖고 있기 때문에 호출되기 때문입니다(public
코드> ). 🎜위 내용은 Java 함수 액세스 수정자 및 메서드 재정의의 영향의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!