【Java】アクセス修飾子privateの使い方【クラス・メソッド・フィールド】
  • facebookページ
  • twitterページ
  • 2021.02.12

    【Java】アクセス修飾子privateの使い方【クラス・メソッド・フィールド】

    Javaではクラスやメソッド・フィールドの前にアクセス修飾子(private・public・protected)を付与することで、データにアクセス出来る範囲を指定します。

    本記事では、Java初心者の方向けにアクセス修飾子privateの使い方をクラス・メソッド・フィールドでサンプルコードを掲載しながらご紹介していきます。

    private修飾子とその他アクセス修飾子の違い


    アクセス修飾子の1つである「private」は、同一クラス内でのみデータにアクセスすることが可能となります。

    privateのアクセス範囲
    • 同一クラス: 可
    • 同一パッケージ: 不可
    • 別パッケージのサブクラス: 不可
    • 別パッケージのサブクラス以外:不可

    その他アクセス修飾子との違い

    privateのアクセス範囲と同様に「public」「protected」「指定なし」の場合のアクセス範囲についても確認しておきましょう。

    各修飾子のアクセス範囲
    • public
      • 同一クラス: 可
      • 同一パッケージ: 可
      • 別パッケージのサブクラス: 可
      • 別パッケージのサブクラス以外:可
    • protected
      • 同一クラス: 可
      • 同一パッケージ: 可
      • 別パッケージのサブクラス: 可
      • 別パッケージのサブクラス以外:不可
    • 指定なし
      • 同一クラス: 可
      • 同一パッケージ: 可
      • 別パッケージのサブクラス: 不可
      • 別パッケージのサブクラス以外:不可
    ポテパンダの一言メモ

    指定なしというのは「void メソッド名」のように、アクセス修飾子の指定をせず定義することを意味しています。

    privateクラスの使い方


    privateクラスは、他の外部クラスから呼び出されたくないクラスを定義する際に記述します。

    内部クラスを定義する場合、1つのファイルにプログラムが増加する傾向にあり、privateクラスが利用される機会はそれほど多いわけではありません。

    privateクラスを呼び出すサンプル

    「Sample」クラスに定義した「PrivateSample」クラスを呼び出すサンプルコードが下記となります。

    実行結果

    privateクラスが呼び出せないサンプル

    下記のように外部のクラスからprivateクラスを呼び出そうとするとコンパイルエラーとなります。

    「型 Main.PrivateSample は不可視です」のエラーとなりコンパイルが出来ません。

    privateメソッドの使い方


    privateメソッドはクラス内部でのみ使用したい処理を記述する際に利用します。

    privateメソッドを呼び出すサンプル

    同一クラス内のmainメソッドから直接privateメソッドを呼び出すパターンと、外部クラスのprivateメソッドをpublicメソッドを経由して呼び出す2つのパターンを実行するサンプルです。

    実行結果

    「privateSample1」のメソッドに関しては、呼び出し元の「main」メソッドと同一クラス内に存在するため問題なく処理を呼び出すことが出来ます。

    外部クラスの「Sample」に記述している「privateSample2」に関しては「publicSample」を経由することで処理を実施しています。

    privateメソッドを呼び出せないサンプル

    では上記サンプルで「privateSample2」を直接「main」メソッドから呼び出す記述に変更してみましょう。

    「メソッド privateSample2(String) は型 Sample で不可視です」のエラーとなりコンパイルが出来ません。

    privateフィールドの使い方


    privateフィールドは、外部から直接フィールド値を変更してもらいたくない場合に利用します。

    Javaのシステム開発では、基本的にメンバー変数であるフィールドはprivateに設定し、ゲッター(getter)・セッター(setter)と呼ばれるアクセス用のメソッドを公開する方法が一般的です。

    privateフィールドに直接アクセスするサンプル

    同一クラス内であれば、直接フィールドの値を書き換えることは可能です。

    外部クラスから値を変更したい場合は、セッターメソッドを呼び出し値を変更した上でゲッターメソッドで値を取得するか、別途用意したメソッド内で処理を完結させる方法で実現出来ます。

    実行結果

    privateフィールドに直接アクセス出来ないサンプル

    外部クラスから下記のように直接privateフィールドにアクセスしようとした場合はエラーとなります。

    「フィールド Sample.text1 は不可視です」のエラーとなりコンパイルが出来ません。

    さいごに: private修飾子を使いこなしてJavaのアクセス範囲を適切に定義しよう


    本記事では、Javaのアクセス修飾子の1つである「private」の使い方についてご紹介していきました。

    予期せぬエラーやセキュリティ上の問題を起こさせないためにも、アクセス範囲を最小限に限定することは大切です。

    データの修正が簡単だからとpublic修飾子ばかり使うのではなく、今回ご紹介したようなprivateやprotectも利用して、適切なデータ範囲を定義するよう意識しておきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE