Java public private アクセス指定子とは?protected

クラス内にメンバ変数、メンバ関数を記述する際には、
アクセス指定子と言うモノを考慮しなくてはなりません。

クラスのメンバを
クラスの外からアクセスできる部分
できない部分に区別する事ができます。

クラスの外からアクセスできれば、
外から、メンバ変数に代入したり、メンバ変数の値を読み出したり、
メンバ関数を呼び出したり・・・と言った事が可能です。

逆に、クラスの外からアクセスできない設定ならば、
外から、メンバ変数に代入したり、メンバ変数の値を読み出したり、
メンバ関数を呼び出したり・・・と言った事が不可能になります。

「クラスの外から」と言うのは、
別のクラスのメンバ関数内からアクセスできるか。
と言う意味で、

「クラスの中から」と言うのは、
自クラスのメンバ関数内からアクセスできるか。
と言う意味です。

実際に使用するアクセス指定方法は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");
      }
}