Javaコンテンツ(キーワード民間デフォルトは公共の保護)

Javaの関連する権利の意味をまとめるために、

分類 同じクラス 同じパッケージ 異なるパッケージのサブクラス 非子クラスの異なるパッケージ
プライベート
デフォルト
保護されました
パブリック

プライベート

サンプル私的使用

    class Test{
        public static void main(String[] args){
            Person person = new Person("Daming");

            System.out.println(person.name);
        }
    }

    class Person{
        private String name;

        Person(String name){
            this.name = name;
        }

        public String getName(){
            return this.name;
        }
    }

以下に示すような結果は、実行コードをアピール:

画像は私有財産で変更することができるだけで、このクラスで学んだことができます。

民間の修正内容は、サブクラスで使用することはできません。

    class Test{
    public static void main(String[] args){
        subPerson person = new subPerson("Daming");
     }
    }



class Person{
    private String name;

    Person(String name){
        this.name = name;
    }

    public String getName(){
        return this.name;
    }
}
class subPerson extends Person{
    
    subPerson(String name){
        super(name);
    }
    
    public String ShowName(){
        return name;
    }
}


控訴コードは、プライベート変数を継承することはできませんサブクラスを表します。

デフォルト

デフォルトでは、サンプルを使用して、デフォルトでは、パッケージで使用することができ、使用時に、例えば、次のコード

    package com.test.Demo;

    class Person{
        String name;
    
        Person(String name){
                this.name = name;
        }
    
        public String getName(){
                return this.name;
        }
    }

    public class Demo{
        public static void main(String[] args){
                Person person = new Person("Daming");
                System.out.println(person.name);
        }
    }

次のようにアピールコードの実行結果は次のとおりです。

しかし、ときに別のパケット・エラーは、次のサンプルコードを発生します。

//父类的定义
package com.test.Demo;

public class Person{
    String name;
    
    public Person(String name){
        this.name = name;
    }
    
    public String getName(){
        return this.name;
    }
}

import com.test.Demo.Person;

class Test{
    public static void main(String[] args){
        Person p = new Person("Daming");
        
        System.out.println(p.name);
    }
}

オブジェクトクラスのクラスには、次のようにエラーが発生した場合、パケット呼ない場合:

保護されました

protecte実験コードは次のようである:(彼らは役に立ち保護し理解しているので、他の人が書いたコードを参照してください)

package com.lky.h1;

public class Base{
    private Integer id;
    protected String name;
    
    
    public Integer getId(){
        return id;
    }
    
    public void setId(Integer id){
        this.id = id;
    }
    
    public String getName(){
        return name;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public String toString(){
        return "Base [id=" + id + ", name=" + name + "]"; 
    }
}
//在同一个包中的子类
package com.lky.h1;

class Test1 extends Base{

    public static void main(String[] args){
        Test1 test1 = new Test1();
        Base base = new Base();
        
        base.name = "Daming";
        test1.name = "hong";
        
        System.out.println(base.name);
        System.out.println(test1.name);
    }
}

結果は以下の通りであります:

同じパッケージを説明するためにこの時点では、親クラスまたはサブクラスのいずれかが保護された修正変数で定義呼び出すことができます。

以下は、異なるパッケージで定義されたサブクラスであります

package com.lky.h2;

import com.lky.h1.Base;

class Test2 extends Base{

    public static void main(String[] args){
        Test2 test2 = new Test2();
        Base base = new Base();
        
        base.name = "Daming";
        test2.name = "hong";
        
        System.out.println(base.name);
        System.out.println(test2.name);
    }
}

次のように業績は以下のとおりです。

図は同じパッケージによって記述することができ、保護された修飾された変数の親クラス定義は、親クラスとサブクラスのインスタンスがアクセス可能です。

しかし、別のパッケージ、保護された修飾変数で親クラスで定義され、サブクラスを直接インスタンスを介してアクセスすることができ、親クラスのインスタンスに直接アクセスすることはできません。

おすすめ

転載: www.cnblogs.com/gxcstyle/p/10990455.html