Java(public,protected,private)単純プログラム分析

4648 ワード

publickはクラスと変数メンバーメソッドを同時に修飾できます.publicでクラス名を修飾すると、public class A{..}のように、クラスが他のすべてのクラスにアクセスまたは参照できることを示します.すなわち、他のクラスはクラスのインスタンスを作成し、クラスのすべての可視メンバー変数にアクセスし、すべての可視メソッドを呼び出すことができます.クラスメンバー(変数とメソッド)がpublicで修飾されている場合、クラスのメンバーは内部メンバーのみならず、他のクラスにも直接アクセスできることを示します.すなわち、外部は共有データと共有メソッドに直接アクセスできます.サンプルです.

class P1
{
    public int x;
    public void set_x(int i){
        x=i;
    }
    public void show_x(){
        System.out.println("x="+x);
    }
}

class Example {
    public static void main(String args[]){
        P1 Obj=new P1();
        Obj.set_x(3);
        Obj.show_x();
        Obj.x=10;
        System.out.println("x="+Obj.x);
    }

}


結果:x=3 x=10分析:クラスP 1のすべてのメンバーがpublicタイプとして定義されるため、変数xとメソッドset_x()とshow_x()は、他のクラスExampleから直接アクセスできます.
protectedは主にクラスメンバーを修飾するために使用され、そのメンバーが保護されたメンバーであることを示し、クラス自身によってアクセスできるほか、クラスのサブクラスおよび同じパッケージ内の他のクラスによってアクセスすることもできる.サンプル
class FirstClass {
    protected int n=3;
    protected void show_n(){
        System.out.println("n="+n);
    }
}
class SecondClass extends FirstClass{
    public static void main(String args[])
    {
        SecondClass abs=new SecondClass();
        abs.show_n();
        abs.n=10;
        abs.show_n();
    }
}

結果x=3 x=10分析:このサンプルは、子クラスで親クラスにアクセスする保護されたメンバーを示します.SecondClassはFirstClassのサブクラスであり、キーワードextendsはそれらの間が継承関係であることを示す.この列から、子クラスは親クラスの保護されたデータとメソッドに直接アクセスできることがわかります.
privateは主にクラスメンバーを修飾するために使用され、クラスメンバーがクラス自身にしかアクセスできないことを示します.他のクラス(クラスのサブクラスを含む)は、修飾または参照する権限がありません.他のユーザーが任意に参照または変更したくないデータおよびメソッドをprivateに設定する必要があります.これにより、プライベートメンバーが他のクラスに対して表示されなくなり、publicとして宣言されたメソッドのみがこれらのプライベートデータにアクセスでき、情報の影蔵およびカプセル化の目的を達成できます.
サンプル
package Test;

public class Date {
    private int day,month,year;
    public void tomorrow(){
        day=day+1;
    }
    public void setDay(int d)
    {
        day=d;
    }
}
class DateUser{
    public static void main(String args[]){
        Date myDate=new Date();
//      myDate.day=21;  
//      System.out.println("day="+myDate.day);
        myDate.setDay(21);      
    }
}

解析:クラスDateの3つのメンバー変数はprivateタイプとして定義され、このクラスでは使用に制限はありません.しかし、別のクラスDateUserでは、他のクラスのプライベートメンバーへのアクセスが制限されているため、mydate.day=21はエラーですが、メンバー変数のいずれかを操作するには、mydateを使用するなど、クラスDateの共有メソッドで完了できます.setDay(21)は、dayを21に割り当てる目的にも到達することができる.ヒント:クラスメンバーの前にpublic、protected、privateのいずれかの修飾子がない場合は、デフォルト(default)修飾子が使用されています.この場合、デフォルトのメンバーに直接アクセスできるのは、クラス自体と同じパッケージ内の他のクラスだけです.表
                                                        

private @ default @ @ protected @ @ @ public @ @ @ @