クラス内のグローバル変数とメソッドの可視スコープ、つまり、オブジェクト参照を通じて表示できるスコープ。
public | protected | private | |
パック範囲 | √ | √ | × |
他のパッケージもできます | √ | √ | |
× | 3. 可視性の理解 | 変数またはメソッドは別のクラス B から可視です。これは、変数またはメソッドがオブジェクト参照を通じて B に直接公開できることを意味します。逆も同様です。不可視とは、変数またはメソッドがオブジェクト参照を通じて直接アクセスできないことを意味します。クラスBで。 |
package com.javase.temp;import org.junit.Test;public class TempTest {private String str = new String("abc"); @Testpublic void printStr() { System.out.println(this.str); } }
TempTest クラスにはメンバー変数 str があることは明らかですが、これはプライベート型であり、他のクラスからは見えません。つまり、この変数はオブジェクト参照を通じて他のクラスに現れることができません。他のクラスに間接的に表示される printStr メソッドを呼び出すことで呼び出すことができます。
package com.javase.temp;import org.junit.Test;public class TempTest01 { @Testpublic void test01() { TempTest obj = new TempTest(); obj.printStr();//通过TempTest类型的public类型的方法间接访问了private类型的变量,在访问时不知道private类型变量的情况 } }
出力:
TempTestオブジェクトobjのメソッドprintStrがTempTest01クラスで呼び出され、プライベート変数strの値が出力されます。 str は TempTest01 では直接公開されませんが、TempTest のメソッド printStr で直接公開され、TempTest ではメソッド printStr が直接公開されるため、TempTest では間接的に str が公開されます。
TempTest01にはTempTestのプライベート型変数の値が出力されますが、この出力はランダムであり、TempTest01は出力結果が変数strからのものであることを知る由もなく、意味のない出力となります。
外部から直接アクセスされないように設計された変数は、通常、この種の操作の中間プロセスとして使用され、他の目に見える変数やメソッドを支援します。
以上がJava アクセス許可の概要と理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。