「こんにちは、私のお気に入りの学生です。これから変数の可視性について話します。」
「え?変数って見えないの?」
「いいえ。変数の「可視性」、つまりスコープとは、その変数を参照できるコード内の場所を意味します。 一部の変数はプログラム内のどこでも使用できますが、その他の変数はそのクラス内でのみ使用でき、その他の変数は - 1 つのメソッド内でのみ。」
「たとえば、宣言されるまで変数を使用することはできません。」
"それは理にかなっている。"
「ここにいくつかの例を示します。」
┏
┃public class Variables
┃┏
┃┃{
┃┃ private static String TEXT = "The end.";
┃┃ ┗━━━━━━━━━━━━━━┛
┃┃ public static void main (String[] args)
┃┃ ┏ ┗━━━━━━━┛
┃┃ ┃ {
┃┃ ┃ System.out.println("Hi");
┃┃ ┃ String s = "Hi!";
┃┃ ┃ ┏┗━━━━┛
┃┃ ┃ ┃ System.out.println(s);
┃┃ ┃ ┃ if (args != NULL)
┃┃ ┃ ┃ {
┃┃ ┃ ┃ String s2 = s;
┃┃ ┃ ┃ ┗━━━━┛
┃┃ ┃ ┃ ┏
┃┃ ┃ ┃ ┃ System.out.println(s2);
┃┃ ┃ ┃ ┗
┃┃ ┃ ┃ }
┃┃ ┃ ┃ Variables variables = new Variables();
┃┃ ┃ ┃ System.out.println(variables.instanceVariable);
┃┃ ┃ ┃ System.out.println(TEXT);
┃┃ ┃ ┗
┃┃ ┃ }
┃┃ ┗
┃┃ public String instanceVariable;
┃┃ ┗━━━━━━━━━━━━━━━┛
┃┃ public Variables()
┃┃ {
┃┃ instanceVariable = "Instance variable test.";
┃┃ }
┃┃}
┃┗
┗
1. メソッド内で宣言された変数は、宣言の開始からメソッドの終了まで存在します (表示されます)。
2. コードブロック内で宣言された変数は、コードブロックの終わりまで存在します。
3. メソッドのパラメータはメソッド内のあらゆる場所に存在します。
4. オブジェクト内の変数は、それを含むオブジェクトの存続期間全体にわたって存在します。それらの可視性は、特別なアクセス修飾子publicおよびprivateによっても定義されます。
5. 静的 (クラス) 変数は、プログラムの実行中ずっと存在します。それらの可視性はアクセス修飾子によっても定義されます。
「私は写真が大好きです。写真はすべてを明確にするのに役立ちます。」
「いい子だよ、アミーゴ。君が賢い奴だということはずっと分かっていたよ。」
「『アクセス修飾子』についても説明します。怖がらないでください。これについては何も複雑なことはありません。ここでpublicとprivate という言葉がわかります。」
「怖くないです。目がピクピクしているだけです。」
「信じます。あるクラスのメソッドと変数が他のクラスからどのようにアクセスされるか (または参照できるか) を管理できます。各メソッドまたは変数に割り当てられるアクセス修飾子は 1 つだけです。
1.パブリックアクセス修飾子。
public 修飾子でマークされた変数、メソッド、またはクラスは、プログラム内のどこからでも使用できます。これは最高レベルのアクセスです。ここには制限はありません。
2.プライベートアクセス修飾子。
private 修飾子でマークされた変数またはメソッドは、それが宣言されているクラスからのみ使用できます。他のすべてのクラスでは、マークされたメソッドまたは変数は、存在しないかのように非表示になります。これは最高レベルの閉鎖性であり、独自のクラス内のみにアクセスします。
3. 修飾子なし。
変数またはメソッドが修飾子でマークされていない場合、「デフォルト」アクセス修飾子でマークされているとみなされます。このような変数とメソッドは、それらが宣言されているパッケージ内のすべてのクラスにのみ表示されます。変数とメソッドへのアクセスは、そのクラスを含むパッケージ全体に対してオープンであるため、このレベルのアクセスは「package-private 」アクセスと呼ばれることもあります。
これまで話し合った内容をまとめた表が次のとおりです。」
修飾子 | からのアクセス… | ||
---|---|---|---|
自分のクラス | 独自のパッケージ | どのクラスでも | |
プライベート | はい | いいえ | いいえ |
修飾子なし ( package-private ) | はい | はい | いいえ |
公共 | はい | はい | はい |
GO TO FULL VERSION