ホームページ  >  記事  >  Java  >  さまざまなクラスで Java 関数のアクセス修飾子を使用するためのルール

さまざまなクラスで Java 関数のアクセス修飾子を使用するためのルール

PHPz
PHPzオリジナル
2024-04-25 13:54:02777ブラウズ

異なるクラスで Java 関数を使用する場合は、次のアクセス権ルールに従ってください: デフォルトのアクセス権は、同じパッケージ内のクラスに制限されます。パッケージの可視性はデフォルトのアクセスと同じですが、同じモジュール内のすべてのクラスに適用されます。保護されたアクセスは、同じパッケージ内のサブクラスおよびクラスに限定されます。パブリック アクセス権はすべてのクラスに表示されます。

Java 函数的访问权限修饰符之在不同类中使用的规则

さまざまなクラスの Java 関数でアクセス修飾子を使用するためのルール

Java のアクセス修飾子は、クラス、メソッド、およびフィールドの可視性スコープを制御するために使用されます。異なるクラスで関数を使用する場合は、次の規則に従う必要があります:

1. デフォルトのアクセス (修飾子なし)

  • 同じパッケージ内のクラスでのみ表示されます

2. パッケージの可視性 (デフォルト)

  • デフォルトのアクセスと同じですが、同じモジュール内のすべてのクラスに適用されます

3. 保護されたアクセス

  • は、このクラスのサブクラスと同じパッケージ内のクラスでのみ表示されます

4。パブリック アクセス

  • はすべてのクラスで参照できます

実用的な例

次のコードを考えてみましょう:

// MySuperClass.java
public class MySuperClass {
    protected void protectedMethod() {
        // ...
    }

    public void publicMethod() {
        // ...
    }
}
// MySubClass.java
public class MySubClass extends MySuperClass {
    // 可访问父类的 protected 和 public 方法
    void accessProtected() {
        protectedMethod();
    }

    void accessPublic() {
        publicMethod();
    }
}
// MyOtherClass.java
public class MyOtherClass {
    // 无法访问父类的 protected 或 public 方法
    void accessProtected() {
        // 编译错误: protectedMethod() 具有 protected 访问权限,在此包外不可访问
    }

    void accessPublic() {
        // 编译错误: publicMethod() 具有 public 访问权限,但在不同的模块中不可访问
    }
}

この例では、MyOtherClass 无法访问 MySuperClass 中的 protectedMethod()publicMethod(),因为它们不是在同一包中或不是 MySuperClass のサブクラスです。

Notes

  • 内部クラスは、アクセス修飾子に関係なく、外部クラスのすべてのメンバーにアクセスできます。
  • コンパイラーはアクセス許可をチェックし、ルールに違反している場合はコンパイルエラーを生成します。

以上がさまざまなクラスで Java 関数のアクセス修飾子を使用するためのルールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。