>  기사  >  Java  >  Java 함수에 대한 액세스 한정자를 사용할 때 주의할 사항

Java 함수에 대한 액세스 한정자를 사용할 때 주의할 사항

WBOY
WBOY원래의
2024-04-25 17:09:01582검색

Java 기능 액세스 권한 수정자에는 공개, 보호, 기본 및 비공개가 포함됩니다. 다음 예방 조치를 따라야 합니다. 중첩 클래스는 외부 클래스의 전용 멤버에만 액세스할 수 있습니다. 하위 클래스의 함수는 상위 클래스의 액세스 권한을 상속하지만 다형성에서는 하위 클래스가 상위 클래스 함수를 재정의할 때 액세스 권한을 줄일 수 없습니다. 더 제한적입니다. ;default 수정자는 동일한 패키지 내에서만 함수를 표시합니다.

Java 函数的访问权限修饰符之使用时的注意事项

Java 함수의 액세스 수정자:

Foreword

사용 시 주의사항 액세스 수정자는 다른 클래스나 패키지에 대한 Java 함수의 가시성을 제어하는 ​​데 사용되며 이는 코드의 안전을 보장하는 데 중요합니다. 캡슐화와 보안이 중요합니다. 이 기사에서는 Java에서 함수 액세스 권한 수정자를 사용할 때 주의 사항을 소개하고 실제 사례를 통해 설명합니다.

액세스 수정자

Java에서 일반적으로 사용되는 함수 액세스 수정자는 다음과 같습니다.

  • public: 어디서나 액세스할 수 있습니다.
  • protected: 동일한 패키지 또는 하위 클래스에서 액세스할 수 있습니다
  • 기본(패키지 -private): 동일한 패키지 내에서만 액세스 가능
  • private: 정의된 클래스 내에서만 액세스 가능

참고

액세스 수정자를 사용할 때 필요함 다음 참고 사항을 따르세요.

  • 중첩 클래스 : 중첩 클래스에 정의된 함수는 외부 클래스의 전용 멤버에만 액세스할 수 있습니다.
  • 하위 클래스: 하위 클래스의 함수는 상위 클래스의 액세스 권한을 상속하지만 상위 클래스의 액세스 권한을 줄일 수는 없습니다.
  • 다형성: 하위 클래스는 상위 클래스의 함수를 재정의할 수 있지만 재정의된 함수의 액세스 권한은 상위 클래스 함수의 액세스 권한보다 더 제한적일 수 없습니다.
  • 패키지 가시성: 기본 수정자를 패키지 가시성이라고 부를 수도 있습니다. 즉, 해당 함수는 동일한 패키지의 클래스에만 표시됩니다.

실용 사례

액세스 한정자의 사용을 설명하는 두 개의 클래스가 포함된 코드 예제를 보여줍니다.

// 外部类
public class OuterClass {
    private int privateField;  // 私有字段
    protected int protectedField;  // 受保护字段
    int defaultField;  // 默认字段
    public int publicField;  // 公共字段

    // 私有方法
    private void privateMethod() {
        System.out.println("私有方法");
    }
    // 受保护方法
    protected void protectedMethod() {
        System.out.println("受保护方法");
    }
    // 默认方法
    void defaultMethod() {
        System.out.println("默认方法");
    }
    // 公共方法
    public void publicMethod() {
        System.out.println("公共方法");
    }
}

// 内部类
class InnerClass {
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();

        // 访问内部类中的公共字段
        System.out.println(outer.publicField);

        // 访问外部类中的默认字段(因为内部类和外部类在同一包中)
        System.out.println(outer.defaultField);

        // 无法访问外部类中的私有字段
        // System.out.println(outer.privateField);

        // 无法访问外部类中的受保护字段(因为内部类不是外部类的子类)
        // System.out.println(outer.protectedField);

        // 无法调用外部类中的私有方法
        // outer.privateMethod();

        // 可以调用外部类中的受保护方法
        outer.protectedMethod();

        // 可以调用外部类中的默认方法
        outer.defaultMethod();

        // 可以调用外部类中的公共方法
        outer.publicMethod();
    }
}

이 예제에서는

  • OuterClass >privateField만 가능합니다. OuterClass 내에서 액세스됩니다. OuterClassOuterClass 中的 privateField 只能在 OuterClass 中访问。
  • OuterClass 中的 protectedField 可以在 OuterClass 及其子类中访问。
  • OuterClass 中的 defaultField 可以在同一包中的任何类中访问。
  • OuterClass 中的 publicField 可以从任何地方访问。
  • InnerClass 可以访问 OuterClass
  • protectedFieldOuterClass 및 해당 하위 클래스에서 액세스할 수 있습니다. OuterClass
🎜defaultField는 동일한 패키지의 모든 클래스에서 액세스할 수 있습니다. OuterClass의 🎜🎜publicField는 어디에서나 액세스할 수 있습니다. 🎜🎜InnerClassOuterClass의 공개, 보호 및 기본 멤버에 액세스할 수 있지만 비공개 멤버에는 액세스할 수 없습니다. 🎜🎜

위 내용은 Java 함수에 대한 액세스 한정자를 사용할 때 주의할 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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