private変数 【private variable】 privateプロパティ / private property / privateフィールド / private field
概要
private変数(private variable)とは、オブジェクト指向プログラミングでクラスに定義されるメンバ変数のうち、クラス内からのみ参照できるもの。同じクラスのメソッドからのみ値の読み込みや代入を行うことができ、外部から読み書きすることはできない。言語により「private変数」「privateプロパティ」「privateフィールド」などと呼ばれる。クラスベースのオブジェクト指向プログラミング言語では、オブジェクトの雛形である「クラス」(class)を定義し、オブジェクトを表すデータである「メンバ変数」(member variable)あるいは「プロパティ」(property)と、変数の操作や何らかの処理を行う手続きである「メソッド」(method)を記述する。
変数やメソッドの宣言時にはデータ型などと共に、プログラム上のどの範囲から参照することができるかを指定する「アクセス修飾子」(access modifier)を指定することができる。多くの言語では「private」「protected」「public」の3種類を用意しており、「private」はクラス内からのみアクセスを許可する。
言語により記法は異なるが、先頭に「private」というキーワードを付けて「private int someProp = 0;」のように宣言するとprivate変数を定義することができる。同じクラス内のメソッドからのみアクセス可能であり、他のクラスのメソッドから呼び出そうとするとエラーになる。
外部から状態の参照や代入が必要な変数については、そのクラスのメソッドとして変数の読み書きを行うものを用意するという手法がある。変数名「X」について「getX();」「setX(引数)」というメソッドと用意し、getXを呼び出すと値の読み出しが、setXを呼び出すと値の代入ができる。これらを「getterメソッド」「setterメソッド」と呼び、合わせて「アクセサ」(accessor)と呼ぶ。
オブジェクト指向プログラミングではオブジェクトが外部に公開するのは操作、すなわちメソッドのみであり、メンバ変数はprivateとするのが原則とされる。オブジェクトの内部状態である変数を外部から直接知る必要があったり、直接操作する必要がある場合には機能の切り分けなど設計がうまくいっていない可能性がある。