保護されたキーワードは、変数、メソッド、コンストラクターにアクセスできる範囲を制限するために使用されるキーワードです。これは、Java のアクセス修飾子のタイプの 1 つです。これらは、メソッド、変数、コンストラクター、クラスのスコープを区別するために使用されます。 Java には 4 種類のアクセス修飾子があります。
広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト変数またはメソッドが保護済みとしてマークされると、以下のメソッドによってのみアクセスできます:
保護されたキーワードは、クラス外の変数にアクセスし (プライベート キーワードの場合は不可能です)、特定のメソッドのみが同じものを継承できるように維持するために導入されたため、パブリック キーワードとプライベート キーワードの両方を組み合わせたようなものです。
保護されたキーワードは、キーワードの前に「protected」というキーワードを付けて宣言されます。まず、以下のように「MyClass」というクラスの 1 つで protected キーワードを宣言します。
class MyClass { protected String name = "Katy"; protected int token= 55; } public class SubClass extends MyClass { public static void main(String[] args) { SubClass obj = new SubClass(); System.out.println(obj.name + "'s token number is: " + obj.token); } }
ここでは、クラス「SubClass」は「MyClass」を拡張しているため、SubClass のオブジェクトを作成し、変数を呼び出すことで、保護されたキーワードをここで使用できます。
出力:
保護されたキーワードはメンバー レベルでのみ使用できます。つまり、関数の外で宣言された静的でない内部クラスです。 protected キーワードは、クラスの外部および別のパッケージのサブクラス内でアクセスできるため、private のキーワードとは異なります。
保護されたキーワードの使用に関する制限の一部は次のとおりです:
保護されたキーワードの概念をよりよく理解できる例をいくつか見てみましょう。
ここでは、「package1」の親クラスからキーワードを呼び出してみます。 「package2」には「ProtectedExample2」が作成されており、ここではキーワード「disp」を呼び出しています。ただし、子クラスはメイン クラスから値を継承していないため、コードはキーワードにアクセスできず、示されているように例外をスローします。
コード:
package com.package1; public class Example { protected String disp="Printing message from protected variable from package1"; } //Create new package as com.package2 //Create new class as ProtectedExample2 package com.package2; import com.package1.Example; public class ProtectedExample2 { public static void main(String[] args) { ProtectedExample2 a=new ProtectedExample2(); System.out.println(a.disp); } }
出力:
この例では、保護されているクラス「ProtectedExample5」にアクセスしようとします。これによりコンパイル エラーが発生します。
コード:
protected class ProtectedExample5 { void display() { System.out.println("Try to access outer protected class"); } public static void main(String[] args) { ProtectedExample5 p=new ProtectedExample5(); p.display(); } }
出力:
以下の例では、まず「com.package1」というパッケージを作成し、「Example」という名前で新しいクラスを作成します。ここで、キーワード「disp」が保護されていることを宣言します。この保護されたキーワードをクラス「Example1」を使用して表示してみます。このためには、まず親クラス「Example1」のオブジェクトを作成し、キーワード「disp」に割り当てられた値を出力する必要があります。
コード:
package com.package1; public class Example { protected String disp="Printing message from protected variable from package1"; } class Example1 { public static void main(String[] args) { Example obj=new Example(); System.out.println(obj.disp); } }
出力:
Using the same code as above, we shall see how to call the protected keyword by creating a different package, “package2”. A protected keyword can be accessed only through inheritance from package1; hence “ProtectedExample2” is extended from “Example”. In a similar way as the first example, we have to create an object of the class “ProtectedExample2” in order to access the protected keyword from package “com.package1”.
Code:
package com.package2; import com.package1.Example; public class ProtectedExample2 extends Example{ public static void main(String[] args) { ProtectedExample2 a=new ProtectedExample2(); System.out.println(a.disp); } }
Output:
Here the class is declared as protected inside the inherited class “Example5”. Also, a protected class called “Example” is declared outside the function but in the same package. When an object of “Example5” is created and the protected class “disp()” is called, we can observe that the overridden method is called instead of the outside class. This is because we shall not be able to import “com.package1” and its class “Example” since it is not visible and causes a compilation error.
Code:
//Create a file by Example.java package com.package1; class Example { protected void disp() { System.out.println("Printing from protected class in the outside function"); } } //Create a class by the name Example5.java public class Example5 extends Example { protected void disp() { System.out.println("Accessing the overriden function"); } public static void main(String[] args) { Example5 exp=new Example5(); exp.disp(); } }
Output:
The importance of protected keyword in java is:
As shown in the above examples, we choose protected keywords depending on the access level we require at the code level. They help greatly in cases where the same variable or class needs to be accessed from other inherited methods in the program. A parent-child relationship is always present between the parent class and its sub-classes which are using the protected keyword.
以上がJava の保護されたキーワードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。