【Java】アクセス修飾子について

#技術系
written by みよしや

こんにちは、みよしやです。

今回は、Javaのアクセス修飾子の使い方について書いていこうと思います。

アクセス修飾子とは

アクセス修飾子は、クラス・メソッド・フィールドへのアクセス制限を設定する機能です。

あらかじめ公開範囲を決めそれに合ったアクセス修飾子を宣言することで、
想定していない利用を防ぐことができ、なおかつ可読性も増します(同一クラス内でしか呼ばれないことなどが見ただけで判別できるため)

 

アクセス修飾子の種類

アクセス修飾子は全部で4種類あります。
それぞれのスコープ(有効範囲)をまとめたものが下記になります。

アクセス修飾子 スコープ
public 全てのクラスからアクセス可能
protected 同一クラス・同一パッケージ内のクラス・サブクラスからのみアクセス可能
修飾子なし 同一パッケージ内のクラスからのみアクセス可能
private 同一クラスからのみアクセス可能

※クラスとインターフェースは、’public’か’修飾子なし’のみ宣言可能です。

 

カプセル化について

カプセル化とは、フィールドなどに他クラスからのアクセス制限を設定し、
想定していない利用を防ぐための仕組みです。

アクセス修飾子の良い利用例となるため、
カプセル化する場合のサンプルコードを記載します。

public class Test {
   private String name;
     
   // getter
   public String getName() {
      return this.name;
   }

   // setter
   public void setName(String name) {
      this.name = name;
   }
}

変数nameはprivateで宣言されているため、
他クラスからはアクセス不可能です。

nameの値を取得,設定するためのメソッドを用意し、
そのメソッドのアクセス修飾子をpublicにすることで
他クラスからの読み取り・書き込みを行えるようになります。
このような書き方をgetter/setterと呼びます。

getter/setterを作ることで、
フィールド名を変えた際の影響範囲も減らせる・代入する値の検証を行えるなどのメリットがあります。

 

最後に

今回はJavaで説明しましたが、
オブジェクト指向はアクセス修飾子を使ってカプセル化を実装するのが基本のため
他のオブジェクト指向言語を使用する際も役立つ考え方だと思います。

ご覧いただきありがとうございました。