>Java >java지도 시간 >Java 함수 액세스 수정자 및 메서드 재정의의 영향

Java 함수 액세스 수정자 및 메서드 재정의의 영향

王林
王林원래의
2024-04-26 09:27:01901검색

하위 클래스에서 재정의된 메서드의 액세스 한정자는 동일하거나 더 넓어야 합니다. 하위 클래스 메서드의 액세스 권한은 상위 클래스 메서드의 액세스 권한보다 넓을 수 있습니다(예: protected에서 public으로 변경). 하위 클래스 메서드는 상위 클래스 메서드보다 더 제한된 액세스 권한을 가질 수 없습니다(예: 공개에서 보호로).

Java 函数的访问权限修饰符之与方法重写的影响

Java 함수 액세스 수정자와 메소드 재정의의 영향

액세스 수정자는 Java 메소드의 접근성을 제어합니다. 4가지 유형이 있습니다:

  • public: 어디서나 액세스 가능
  • protected: 동일한 패키지 및 하위 클래스 내에서 액세스 가능
  • default(명시적 수정자 없음): 동일한 패키지 내에서 액세스 가능
  • private: 클래스 내에서만 액세스 가능

상위 클래스의 메서드를 재정의하는 경우 하위 클래스의 재정의된 메서드에는 동일하거나 더 넓은 액세스 한정자가 있어야 합니다. 이는 재정의된 메서드가 부모 클래스 메서드를 기반으로 하기 때문에 부모 클래스 메서드보다 더 제한될 수 없기 때문입니다.

실용 사례

다음은 상위 클래스입니다.

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() 方法也必须是 protectedpublic。将其设置为 public 符合方法重写的要求,因为它具有比父类方法更宽的访问权限。

运行这两个类将打印以下输出:

Child class show()

这是因为 Child 类中的重写方法被调用,因为它具有更宽的访问权限(publicrrreee

부모 클래스의 로 인해 show( ) 메서드는 protected이고 하위 클래스의 show() 메서드도 protected 또는 public이어야 합니다. 코드> >. public으로 설정하면 상위 클래스 메서드보다 액세스 범위가 더 넓기 때문에 메서드 재정의로 간주됩니다. 🎜🎜이 두 클래스를 실행하면 다음 출력이 인쇄됩니다. 🎜rrreee🎜이는 Child 클래스의 재정의된 메서드가 더 넓은 액세스 권한을 갖고 있기 때문에 호출되기 때문입니다(public 코드> ). 🎜

위 내용은 Java 함수 액세스 수정자 및 메서드 재정의의 영향의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.