ホーム > Java > 第5章-3 静的メンバ

Java -静的メンバ-

クラスの主なメンバには、メンバ変数メソッドがあります。
これらのメンバにstatic修飾子を付けると静的メンバになり、クラスをインスタンス化しなくても利用できるようになります。

staticの付いたメンバ変数をstatic変数(クラス変数)、staticの付いたメソッドをstaticメソッド(クラスメソッド)といいます。

staticの付かない通常のメンバ変数をインスタンス変数、staticの付かない通常のメソッドのことをインスタンスメソッドといいます。

クラスオブジェクト

プログラムの実行を開始すると、そのプログラムで使用される各クラスに1個ずつ、自動的にオブジェクトが生成されます。
これをクラスオブジェクトといいます

static変数

同じクラスから生成した複数のインスタンスで共有したい変数や定数にはstatic修飾子を付けます。
これによって、その変数は、static変数となり、インスタンス化する前でも利用することができます。

さらにfinalを付けると定数になります。

static変数は、同じクラスから生成したインスタンスが複数あっても、1つしかありません。

これに対してインスタンス変数は、同じクラスから生成したインスタンスの数と同じ数だけ、それぞれのインスタンス内に 存在します。

static変数にアクセスする場合の書式

ただし、インスタンス化した後は、インスタンス変数と同様の記述をしても利用することができます。

書式1
クラス名.static変数名
書式2
参照型変数.static変数名
    ※クラスをインスタンス化した場合のみ利用可能。

staticメソッド

staticメソッドは、staticが付いたメソッドです。
このメソッドの内容は、クラスオブジェクトに格納され、インスタンスを生成しなくても利用することができます。

staticメソッドを呼び出す場合の書式

書式1
クラス名.staticメソッド名([引数1][,引数2]…)
書式2
参照型変数.staticメソッド名([引数1][,引数2]…)
    ※クラスをインスタンス化した場合のみ利用可能です。

staticメソッドからインスタンス変数やインスタンスメソッドにアクセスすることはできません。

インスタンスメソッドからstatic変数やstaticメソッドにアクセスすることは可能です。

staticメソッド内でthisキーワードやsuperキーワードは利用できません。

静的インポート

importの後ろにstaticキーワードを記述し、静的なメンバを指定するとそのメンバを簡単な名称で記述できるようになります。

書式
import static パッケージ名.クラス名.静的メンバ名;

通常のimport文と異なり、クラス名を指定するのではなく、クラス内のメンバ、すなわちstatic変数やstaticメソッド指定します。

静的メンバ名の箇所にアスタリスク(*)を指定すると、指定したクラス内のすべての静的メンバを名前だけで記述できるように なります。