ホームページ > Java > &#&チュートリアル > 別のパッケージから Java サブクラスの保護されたメンバーにアクセスできないのはなぜですか?

別のパッケージから Java サブクラスの保護されたメンバーにアクセスできないのはなぜですか?

Linda Hamilton
リリース: 2024-12-10 04:47:12
オリジナル
849 人が閲覧しました

Why Can't I Access a Protected Member in a Java Subclass From Another Package?

Java の protected Modifier を理解する

問題:

2 つのクラス A と C を考えます。ここで、C は A を拡張します。 A は、インスタンス変数を protected int protectedInt = 1 として宣言します。保護されたメンバーは内部でアクセスできるはずであるという期待にもかかわらず、他のパッケージのサブクラスに対して、Eclipse はクラス C の protectedInt へのアクセスを非表示としてフラグを立てます。

答え:

Java protected 修飾子により、独自のパッケージ内のメンバーへのアクセスが許可されます。サブクラスからもアクセスできますが、サブクラスのインスタンスを通じてアクセスが行われた場合に限ります。これは、保護されたアクセスのスコープが、保護されたメンバーが宣言されているクラスではなく、サブクラス型に限定されているためです。

Java 言語仕様 (JLS) によれば、「アクセスはサブクラスの本体内でのみ許可されます」 CのS。」これは、C が A を拡張しても、A のインスタンスから protectedInt への直接アクセスは許可されていないことを意味します。

解決策:

サブクラスの保護されたメンバーにアクセスするには、サブクラス型を使用する必要があります。たとえば、次のコードは有効です:

C c = new C();
System.out.println(c.protectedInt);
ログイン後にコピー

この場合、アクセスはサブクラス (C) のインスタンスを通じて行われるため、保護されたメンバーが表示されます。

以上が別のパッケージから Java サブクラスの保護されたメンバーにアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート