アクセス修飾子の種類 - 萌えJava超入門
第十五章 アクセス修飾子

アクセス修飾子の種類

アクセス修飾子は、クラスやメンバに付与して、
クラスの外からのアクセスを制御します。

目次


1.アクセス修飾子とは


アクセス修飾子の役割は、クラスやメンバのスコープ(有効範囲)を定めるものです。

あれあれ?
スコープって変数のときにも
出てきたっスよね。
宣言した場所によって
スコープが決まるって。
さすが!その通りだ。
アクセス修飾子はメンバに付与する修飾子だ。
もちろんメンバ変数のスコープはクラス全体だ。
これに加えてアクセス修飾子は
クラスの外からのアクセス
を制御する。
クラスの外から?

変数やメソッドといったメンバのスコープはクラス全体です。
これはどのアクセス修飾子を使っても同じです。
アクセス修飾子はさらにその外側、別のクラスからの参照や、
別のパッケージにあるクラスからの参照を制御するものです。


アクセス修飾子の役割
  アクセス修飾子は、クラスやメンバに付与して、
  クラスの外からのアクセスを制御します。




2.アクセス修飾子の種類


アクセス修飾子の種類は、デフォルトを含めて4種類です。
  (今まではすべてデフォルト(修飾子ナシ)でした。)
メンバにはすべてのアクセス修飾子が使えますが、
クラスには、publicデフォルトしか使えません。

アクセス修飾子の種類
 修飾子名 アクセス範囲適用対象
 public アクセス制限なし(公開) クラス メンバ
 protected 同一パッケージ内のクラスからアクセス可能
 サブクラスからのアクセス制限なし
メンバ
 デフォルト
 (修飾子ナシ)
 同一パッケージ内のクラスからアクセス可能 クラス メンバ
 private クラス内でのみ利用可能(非公開) メンバ
よく使いそうな資料一覧 アクセス修飾子の種類にも掲載しています。

ざっくり分けると
 ・制限なく参照可
 ・同一パッケージ内だけ参照可
 ・参照不可
の3段階だ。
クラスとメンバの両方に
付けられるの?
そうなんだ。
これをみてくれ。
重要
 アクセスが許可されたクラスにある
 アクセスが許可されたメンバにだけアクセスできます。

「サブクラス」については、本章で少しだけ触れます。
お急ぎの方は以下からどうぞ。



3.ローカル変数にはアクセス修飾子を付けられません

メソッド内で宣言した変数をローカル変数といいますよね。
ローカル変数のスコープは、所属するメソッド内に限られます。
(ご参照: 第十三章変数のスコープ ローカル変数のスコープ

外部からの参照が一切できませんので、
ローカル変数にはアクセス修飾子を付けられません。

もちろんメソッド自体は呼び出せます。
このように、メソッドは高い独立性が担保されています。
ローカル変数は"スタック領域"と呼ばれるメモリ領域で管理されます。
スコープ内の処理が全て完了すると破棄されます。
メソッドの外からのアクセスはできません。






お疲れ様でした。




© 2019 awasekagami