protect は Java の許可キーワードであり、通常は使用範囲を指定します。
protected:
親クラスの保護されて変更されたクラス メンバーがパッケージに表示されますそしてそのサブクラスが表示されます。
親クラスとサブクラスは同じパッケージ内にありません。サブクラスは、親クラスから継承された保護されたメンバーにのみアクセスできますが、親クラスによってインスタンス化されたメンバーにはアクセスできません。
保護されたメソッドの可視性の次の例を通じて、保護されたキーワードについてさらに理解することができます。保護されたメンバーに関係する呼び出しが発生した場合は、まず保護されたメンバーがどこから来たのか、その可視範囲がどのようなものかを判断する必要があります。その後、現在の使用法が実行可能かどうかを判断できます
例:
//示例一 package p1; public class Father1 { protected void f() {} // 父类Father1中的protected方法 } package p1; public class Son1 extends Father1 {} package p11; public class Son11 extends Father1{} package p1; public class Test1 { public static void main(String[] args) { Son1 son1 = new Son1(); son1.f(); // Compile OK ----(1) son1.clone(); // Compile Error ----(2) Son11 son = new Son11(); son11.f(); // Compile OK ----(3) son11.clone(); // Compile Error ----(4) } }
上の例では、まず (1)(3) を見てください。ここで、 f() メソッドはクラス Father1 から継承されており、その可視性はパッケージ p1 とそのサブクラス Son1 および Son11 です。 f() メソッドを呼び出すクラス Test1 のパッケージも p1 であるため、(1) と (3) は正常にコンパイルされます。次に、(2)(4) を見てください。 clone() メソッドの可視性は、java.lang パッケージとそのすべてのサブクラスです。ステートメント "son1.clone();" および "son11.clone();" については、 、2 ユーザーの clone() はクラス Son1 と Son11 には表示されますが、Test1 には表示されないため、(1) と (3) のコンパイルは失敗します。
概要
protected は、Java クラス メンバーのアクセス許可修飾子としては最も理解しにくいものです。プログラミングでは、protected が関係する呼び出しに遭遇した場合、まず protected メンバーがどこから来たのか、その可視範囲がどのくらいかを判断し、それを正しく使用する必要があります。
以上がJavaのプロテクトとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。