[ジャワ] Javaでのアクセスのレベル – Javaでの編集

データアクセスを保護するために外部からの自由を防ぎます, キーワード指定された範囲へのアクセスをクラスのプロパティとメソッドを使用してオブジェクト指向プログラミング. Javaは、オブジェクトの構成要素へのアクセスを制御するために、いくつかの相補体を使用して後で :

  • パブリック: パブリックコンポーネント, 外部から自由にアクセス.
  • 保護されました: 組成物は、保護されています, アクセス制限.
  • デフォルト (何も書きません): パッケージ内のアクセス.
  • プライベート: クラス内でのアクセス.

1. パブリックメンバー

原材料は、クラスがすべてのプログラムと外部オーディエンスと共有することができ、公共エリアです. パブリックメンバーは、教室の内側と外側からアクセスすることができます:

例: それは構成されています 2 次のパッケージ:

公共trongのJava
私達のファイルの内容は以下のとおりであります:
* コンポーネントGoiAと一緒にパッケージClassA1.javaファイル (varA1変数とメソッドmethodA1) 公開されています (パブリック):

package GoiA;				// goi ten la GoiA

public class ClassA1 {
	public int varA1 = 5;		// bien cong khai ten la varA
	public void methodA1(){		// phuong thuc cong khai methodA1
		System.out.println("methodA1 trong ClassA1 la public");
	}
}

* パッケージ内ClassA2.javaファイルはGoiAを含み 1 使用methodA2方法はClassA1の組成物であり、.

package GoiA;			// goi GoiA

public class ClassA2 {		// ClassA2 su dung bien va phuong thuc cua ClassA1
	void methodA2(){		// phuong thuc methodA2 goi cac thanh phan cua ClassA1
		ClassA1 a1 = new ClassA1();		// tao doi tuong a1 thuoc lop ClassA1
		a1.methodA1();					// goi phuong thuc methodA1
		System.out.println("Bien varA1 = " + a1.varA1);		// in bien varA1
	}
}

* またGoiAにあるファイルClassA3.java継承し、ClassA1のコンポーネントを使用します

package GoiA;

public class ClassA3 extends ClassA1{	// ClassA3 ke thua ClassA1
	void methodA3(){					// phuong thuc methodA3 goi methodA1()
		methodA1();
	}
}

スイッチパックはGoiBを持っています 2 ファイル:
* ClassA2ファイルなどClassA1のClassB1.javaファイルとも呼ばれるコンポーネントがClassB1がClassA1パッケージに私たちはそれをインポートする必要があるため異なっています.

package GoiB;

import GoiA.ClassA1;		// import ClassA1 de su dung

public class ClassB1 {
	void methodB1(){		// phuong thuc methodB1 goi cac thanh phan cua ClassA1
		ClassA1 a1 = new ClassA1();		// tao doi tuong a1 thuoc lop ClassA1
		a1.methodA1();					// goi phuong thuc methodA1
		System.out.println("Bien varA1 = " + a1.varA1);		// in bien varA1
	}
}

* ClassB2.javaファイルもClassA1ようレガシーClassA3 ClassA1を継承しますが、中にClassA1をインポートする必要があります.

package GoiB;

import GoiA.ClassA1;

public class ClassB2 extends ClassA1{	// ClassB2 ke thua ClassA1
	void methodB2(){					// phuong thuc methodB2 goi methodA1()
		methodA1();
	}
}

したがって、私たちはどこにでもClassA1の開放性は、我々は公共の補数を使用した場合ていることがわかります.
我々は、迅速なコメント次の図を描くことができます:
khả năng truy nhập public

2. コンポーネントの保護

それを含むパッケージ内のすべてのクラスおよびすべてのクラスはそれを継承します (他のパッケージからのクラス継承を含みます) それにアクセスする必要があります.

また、VDと上記のように, 我々は持っています 2 パッケージはGoiAであり、そのクラスGoiBと共に, ただ、次のコンポーネントで保護ClassA1を変更 (CAC ClassA2, ClassA3, ClassB1, ClassB2遺跡):

*flie ClassA1.java

package GoiA;				// goi ten la GoiA

public class ClassA1 {
	protected int varA1 = 5;		// bien protected ten la varA
	protected void methodA1(){		// phuong thuc protected methodA1
		System.out.println("methodA1 trong ClassA1 la public");
	}
}

一方、グレードのClassA2, ClassA3はまだそれはまたClassA1でGoiAを知られているようClassA1の構成要素にアクセスします, 他のためのアクセスもClassB2まだそれがパッケージClassA1を継承. しかしClassB1アクセスできません.

*flie ClassB1.java

package GoiB;

import GoiA.ClassA1;		// import ClassA1 de su dung

public class ClassB1 {
	void methodB1(){		// phuong thuc methodB1 goi cac thanh phan cua ClassA1
		ClassA1 a1 = new ClassA1();
		a1.methodA1();										// loi truy nhap
		System.out.println("Bien varA1 = " + a1.varA1);		// loi truy nhap
	}
}

不良ClassB1
保護されました
コメント:
khả năng truy nhập protected

3. デフォルトのコンポーネント

デフォルトのコンポーネント (何宣言されていません) それが唯一の最も内側の層を可能にします 1 パッケージへのアクセス (場合であっても、レガシー). すべてのアクセスまたは他のパッケージから継承されていません.

同様の, デフォルトClassA1の組成上記の例で, それはClassA1と同じパッケージに含まれていないため、一方ClassB1とClassB2が故障しています.
* ClassA1.javaファイル

package GoiA;				// goi ten la GoiA

public class ClassA1 {
	int varA1 = 5;		// bien mac dinh ten la varA
	void methodA1(){		// phuong thuc mac dinh methodA1
		System.out.println("methodA1 trong ClassA1 la public");
	}
}

*flie ClassB1.java

package GoiB;

import GoiA.ClassA1;		// import ClassA1 de su dung

public class ClassB1 {
	void methodB1(){		// phuong thuc methodB1 goi cac thanh phan cua ClassA1
		ClassA1 a1 = new ClassA1();
		a1.methodA1();										// loi truy nhap
		System.out.println("Bien varA1 = " + a1.varA1);		// loi truy nhap
	}
}

*flie ClassB2.java

package GoiB;

import GoiA.ClassA1;

public class ClassB2 extends ClassA1{	// ClassB2 ke thua ClassA1
	void methodB2(){					// phuong thuc methodB2 goi methodA1()
		methodA1();						// loi truy nhap
	}
}

ClassB1, ClassB2は、我々はそれがClassA1だけでなく、使用できないコンポーネントを拡張して宣言することができますが、ClassB2は欠陥があるClassA1.
デフォルト

コメント:
khả năng truy nhập default

4. プライベートメンバ

プライベートコンポーネントは、最も密接に守られています, 同じのオブジェクトのみ 1 新しいクラスにアクセス可能, アクセスを確保、あるいは同じクラスの他のクラスから継承します 1 もアクセス可能なパッケージ.

プライベート

*flie ClassA1.java

package GoiA;				// goi ten la GoiA

public class ClassA1 {
	private int varA1 = 5;			// bien private ten la varA
	private void methodA1(){		// phuong thuc private methodA1
		System.out.println("methodA1 trong ClassA1 la public");
	}

	void methodA2(){
		methodA1();										// goi phuong thuc methodA1
		System.out.println("Bien varA1 = " + varA1);	// in bien varA1
	}
}

我々は唯一の方法を参照してくださいmethodA2() クラスClassA1にアクセスすることができ、民間セクターと同じです, でもClassA2, GoiAパッケージに沿って配置ClassA3もアクセスすることはできません.

コメント:
khả năng truy nhập private

したがって、私たちは見ることができる公共部門のアクセシビリティ, 保護されました, デフォルト, プライバシー上昇と同義プライベート下降機能. 我々は、後に少額を持つことができます:

modifier

を参照して投稿:
– 教科書Javaオブジェクト指向プログラミング – ドアン·ヴァン·バン
– 教科書Javaオブジェクト指向プログラミング – トランディンケ
naynhoanhthichem.blogspot.com
そして、いくつかの教科書, その他のサイト.