Javaクラスのメンバー変数(Member Variable)

メンバー変数

メンバー変数(member variable)は、メソッドの外で宣言された変数を指します。メソッドの中で宣言された変数はローカル(local)変数と呼ばれます。

  • メンバー変数
    • オブジェクト変数
      • オブジェクト属性変数
      • オブジェクト参照変数
    • クラス変数
    • final変数

メンバー変数の構成

メンバー変数の宣言は、アクセス修飾子(public、private、protected)を除けば、通常の変数の構成と同じです。

[public/private/protected] [static/final] 変数型 変数名;

メンバー変数の宣言

メンバー変数の宣言は、アクセス修飾子を除けば通常の変数の宣言と同じです。

int a;
public int b;
private MyClass myclass;

宣言と初期化および生成を同時に行うこともできます。コードでは次のようになります。

public int b = 0;
private MyClass myclass = new MyClass();

メンバー変数名は、通常の変数名と同じように小文字で始めるのが慣例です。ただし、static finalとして宣言された変数の場合、すべて大文字にすることも多いです。

private static final int MY_NUM;

これは一種の定数のような役割を果たすと考えればよいでしょう。

アクセス制御修飾子(Access control modifiers)

  • public

    • すべてのクラスからアクセスできます。
  • private

    • 宣言されたクラスの中でのみ使用できます。
  • protected

    • 同じクラスまたはそのクラスから派生したサブクラスでのみアクセスできます。
  • アクセス修飾子を使用しない

    • 修飾子を使用せずに宣言されたメンバー変数は、同じパッケージ内のクラスからのみアクセスできます。

オブジェクト変数

オブジェクト変数は、オブジェクトが持つことのできる特性を表します。オブジェクト変数が表す値によって、オブジェクト属性変数とオブジェクト参照変数の2つに分けられます。

オブジェクト属性変数

オブジェクト属性変数は、基本データ型(int、float、char、byteなど)の値を持つ変数です。

public int b;

変数の値がコピーされて渡されます。

オブジェクト参照変数

オブジェクト参照変数は、生成されたオブジェクトを指定する変数です。オブジェクトへの参照(reference)、つまりオブジェクトが生成・保存されたアドレス(address)を持ちます。

private MyClass myclass;

オブジェクトへのアドレスがコピーされて渡されるため、最終的に同じオブジェクトを指すことになります。

クラス変数 - staticキーワード

クラス変数は、別名で静的変数とも呼ばれます。staticを使って宣言し、グローバル変数(global variable)としての概念を持ちます。

  • staticを使って宣言し、グローバル変数(global variable)の概念を持ちます。
  • そのクラスから生成されたすべてのオブジェクトが一つのクラス変数を共有します。クラス変数は、一つのクラスから生成されたオブジェクト間の通信や、オブジェクト間の共通属性を表すために使用できます。
  • 通常の変数とは異なり、オブジェクト名を通じてアクセスできず、クラス名を通じてアクセスします。

final変数

  • finalを使って変数を指定すると、変わらない定数値を持ちます。
  • finalが付いた変数は一度だけ初期化でき、その後は値を変更できません。
  • 変数名の慣例上、final変数は大文字を多く使用します。