クラス内にメンバ変数、メンバ関数を記述する際には、
アクセス指定子と言うモノを考慮しなくてはなりません。
クラスのメンバを
クラスの外からアクセスできる部分と
できない部分に区別する事ができます。
クラスの外からアクセスできれば、
外から、メンバ変数に代入したり、メンバ変数の値を読み出したり、
メンバ関数を呼び出したり・・・と言った事が可能です。
逆に、クラスの外からアクセスできない設定ならば、
外から、メンバ変数に代入したり、メンバ変数の値を読み出したり、
メンバ関数を呼び出したり・・・と言った事が不可能になります。
「クラスの外から」と言うのは、
別のクラスのメンバ関数内からアクセスできるか。
と言う意味で、
「クラスの中から」と言うのは、
自クラスのメンバ関数内からアクセスできるか。
と言う意味です。
実際に使用するアクセス指定方法は4つです。
アクセス指定子 | 説明 |
public | どこからでもアクセス可能 |
指定なし | 同じパッケージ内に限り、どこからでもアクセス可能 |
private | 自クラス内からのみアクセス可能 |
protected | 同じパッケージ内に限り、クラス外からアクセス可能 自クラス内からアクセス可能 自クラスの派生クラスからアクセス可能 |
※アクセス指定子は、1つ1つのメンバ変数、関数に対して設定可能です。
※派生クラスやprotectedについては、クラスの継承とは?で説明しています。
※パッケージについては、パッケージとは?で説明しています。
アクセス指定子を使ったクラス記述例
class hito {
public int age; // public指定のメンバ変数
int sinchou; // 指定なしのメンバ変数
private int taiju; // private指定のメンバ変数
// public指定のメンバ関数
public void show_age() {
System.out.printf("年齢は%dです。", age);
}
// 指定なしのメンバ関数
void show_sinchou() {
System.out.printf("身長は%dです。", sinchou);
}
// private指定のメンバ関数
private void show_taiju() {
System.out.printf("体重は%dです。", taiju);
}
// protected指定のメンバ関数
protected void show() {
System.out.println("protected");
}
}