Javaのアクセス修飾子「protected」を理解しよう!
  • facebookページ
  • twitterページ
  • 2019.10.31

    Javaのアクセス修飾子「protected」を理解しよう!

    プログラムを実装する際、曖昧に設定しがちなアクセス修飾子ですがみなさんは適切に定義出来ているでしょうか?

    本記事ではアクセス修飾子の中でも特に曖昧となりがちな「protected」の使い方についてご紹介していきます。

    Javaのアクセス修飾子protectedとは

    Javaにはクラスやフィールド、メソッドを定義する際に記述するアクセス修飾子という概念があります。

    本記事のテーマである「protected」はアクセス修飾子の1つですが、まず基本的な考え方についてご紹介します。

    アクセス修飾子についてまずは理解しよう!

    Javaにはアクセス修飾子という考え方があり、クラスや定義されたフィールド・メソッドがアクセス可能な範囲を定義することが出来るものです。

    「public」「private」「protected」「定義しない(デフォルト)」の4種類から記述することが可能です。

    アクセス修飾子「protected」の役割は?

    Javaのアクセス修飾子「protected」の説明として用いられるのは「同一パッケージまたはサブクラスからは参照可能」との表現です。

    具体的には同一パッケージ内の「自クラス」「サブクラス」「他クラス」と他パッケージの「サブクラス」から参照が可能ということです。

    ポテパンダの一言メモ

    他パッケージに定義されたサブクラス以外のクラスからは参照することが出来ません。

    Javaのサンプルコードでprotectedの使い方を確認しよう

    ここからはサンプルコードを掲載しながら実際にJavaのプログラムでprotectedがどのように使用されるのか確認していきたいと思います。

    同一パッケージの自クラスから参照する場合

    下記のコードは同一パッケージ内の自クラスから各アクセス修飾子で定義したフィールドの値を出力するサンプルです。

    サンプルコードを実行した結果は下記の通りとなります。

    同一パッケージ内の同一クラスからは問題なく「protected」の値を呼び出すことが可能であることをご確認いただけます。

    同一パッケージ内のサブクラスから参照する場合

    次にサブクラスからそれぞれのアクセス修飾子のフィールドを参照した場合のサンプルコードです。

    サンプルコードを実行した結果は下記の通りとなります。

    privateで定義したフィールドに関してはエラーとなるためコメントアウトしています。

    異なるパッケージのサブクラスから参照する場合

    別パッケージのサブクラスから参照する場合のサンプルは下記の通りとなります。

    「同一パッケージのサブクラスから参照する場合」でのサンプルコードをファイル分割したものとなります。

    「Main.java」でファイルを作成しています。

    「SubClass.java」でファイルを作成しています。

    サンプルコードを実行した結果は下記の通りとなります。

    別パッケージに作成した「SubClass」ですが、「Main.java」で継承しているため「protected」のフィールドの値が出力されることを確認出来ます。

    異なるパッケージの他クラスから参照しようとした場合

    では継承を使用せずに別パッケージの他クラスから参照しようとした場合はどうなるのでしょうか?

    答えはコンパイルエラーとなり、実行する事が出来ません。

    下記のサンプルコードで確認してみてください。

    「Main.java」でファイルを作成しています。

    「SubClass.java」でファイルを作成しています。

    サンプルコードをコンパイルしようとすると下記のようなエラーが表示されます。

    上記のコンパイルエラーは、アクセス修飾子「protected」が許可している範囲外(他パッケージのサブクラス以外)からアクセスしようとしているため、コンパイルエラーとなっています。

    さいごに:Javaのアクセス修飾子protectedを理解してオブジェクト指向をより深く理解しよう!

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

    オブジェクト指向をうまく活用してプログラムを組んでいくためにはアクセス修飾子「protected」の理解は欠かせません。

    ぜひ、実用的で可読性の高いプログラムを実装するために、アクセス修飾子「protected」を理解し、Javaのオブジェクト指向をより深く理解してみてください。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

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









    ABOUT US

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

    READ MORE

    ポテパンおすすめ案件