クラス変数のスコープ - 萌えJava超入門
第十三章 変数とスコープ

クラス変数のスコープ

クラス変数はクラス全体がスコープです。

目次


1.クラス変数とは


クラス変数
 メソッドの外(classの中)で宣言した変数を「メンバ変数」といいます。
 メンバ変数の中でも、static修飾子が付いた変数を「クラス変数」といいます。
static修飾子が付いたメソッドをクラスメソッドといいましたね。


classの構成要素メンバ詳細
class{
  • クラスメンバ(class member)
    static修飾子がありクラスに所属
    • クラス変数(class variable)
    • クラスメソッド(class method)
    • staticネストクラス(static nested classes)

  • インスタンスメンバ(instance member)
    static修飾子が無くインスタンスに所属
    • インスタンス変数(instance variable)
    • インスタンスメソッド(instance member)
    • インナークラス(inner classes)
}
この図は後でも出てきます。

クラス変数を扱うのは初めてだな。
このページではクラス変数の
スコープに絞って説明しよう。


2.クラス変数のスコープ


クラス変数のスコープ
  • クラス全体がスコープです。
    class内のすべてのメソッドで使用できます。
  • クラス変数は、アクセス修飾子に則ってクラスの外からも参照できます。

//Sample08_004.java
class Sample08_004{
 static int value = 100;//クラス変数  static void method_04(){//クラスメソッド value *= 1.1;  }  public static void main(String[] args){ method_04(); System.out.println("Price including tax = " + value);  }
}//スコープはここまで。

コマンドライン
>javac Sample08_004.java
>java Sample08_004
Price including tax = 110

おおおぉ!!
クラス内全部?!




ローカル変数の奥ゆかしさとは
えらい違いっスね。
しかもこいつはメンバだ。
アクセス修飾子によっては
所属するクラスの外までスコープになる。
...。


3.クラス変数の使い方


クラスの中のメソッドに共通して使用する値を保持しておくのに使用します。

まあ、それはそうでしょうね。
ここでちょっと
ポイントがある。
細かいことをいうと...。
共通して使用する値が、メソッドによって変化する値である場合は、
この先で説明する インスタンス変数 と、カプセル化を利用した方法の方が好ましいです。
     ご参照→ 第十六章 インスタンス

現段階では気にする必要はありません。
そのような方法があることだけお伝えしておきます。


この口ぶりからすると、
クラス変数の値を変化させても
問題なく動くということですね。
そうなの?
その通りだ。
今はあまり難しく考えないで
むしろ思いつくまま自由に
プログラムを楽しんでほしい。
レベルが上がってくると、値を扱うテクニックがあるってことです。
お楽しみに!



お疲れ様でした。




© 2019 awasekagami