Java入門

【Java入門】アクセス修飾子

2021年4月29日

はじめに

前回の記事では、Javaのオーバーロードについて紹介しました。

本記事では、Javaのアクセス修飾子について紹介します。

アクセス修飾子とは

アクセス修飾子とは、クラスやフィールド、メソッドを他クラスにどこまで公開するかを決める修飾子です。

アクセス修飾子は次のように記述します。※フィールドの例

アクセス修飾子の例

アクセス修飾子には「public」「protected」「private」の3種類があります。

public

publicは、どこからでも利用することができるアクセス修飾子です。

利用方法利用可否
クラス内からの利用〇(利用可)
同じパッケージ内からの利用〇(利用可)
異なるパッケージからの利用〇(利用可)
サブクラスへの継承(同じパッケージ内)〇(利用可)
サブクラスへの継承(異なるパッケージ)〇(利用可)

スポンサーリンク

例えば、次のようなクラス「Cat」があり、フィールドにpublicの変数「name」を定義しています。

アクセス修飾子の例

publicのアクセス修飾子は、どこからでもアクセスできるので、次のように外部のクラスから参照・代入することができます。

publicのアクセス例

protected

protectedは、同じパッケージ内からのみ利用することができるアクセス修飾子です。ただし、継承に関してはパッケージに関わらず利用することができます。

利用方法利用可否
クラス内からの利用〇(利用可)
同じパッケージ内からの利用〇(利用可)
異なるパッケージからの利用×(利用不可)
サブクラスへの継承(同じパッケージ内)〇(利用可)
サブクラスへの継承(異なるパッケージ)〇(利用可)

例えば、次のようなクラス「Cat」があり、フィールドにprotectedの変数「name」を定義しています。

protectedの例

protectedのアクセス修飾子は、異なるパッケージから利用することはできないので、異なるパッケージから利用するとコンパイルエラーが発生します。

異なるパッケージから利用した場合、protectedはエラーとなる

アクセス修飾子なし

アクセス修飾子なしは、同じパッケージ内からのみ利用することができます。

protectedとの違いは、継承に関してprotectedはパッケージに関わらず利用可能だが、アクセス修飾子なしの場合は、パッケージ内からのみ利用可能です。

利用方法利用可否
クラス内からの利用〇(利用可)
同じパッケージ内からの利用〇(利用可)
異なるパッケージからの利用×(利用不可)
サブクラスへの継承(同じパッケージ内)〇(利用可)
サブクラスへの継承(異なるパッケージ)×(利用不可)

例えば、次のようなクラス「Cat」があり、フィールドにアクセス修飾子なしの変数「name」を定義しています。

アクセス修飾子をつけない場合

アクセス修飾子なしは、異なるパッケージから利用することはできないので、異なるパッケージから利用するとコンパイルエラーが発生します。

異なるパッケージから利用した場合、protectedはエラーとなる

private

privateは、クラス内部からのみ利用できるアクセス修飾子です。

利用方法利用可否
クラス内からの利用〇(利用可)
同じパッケージ内からの利用×(利用不可)
異なるパッケージからの利用×(利用不可)
サブクラスへの継承(同じパッケージ内)×(利用不可)
サブクラスへの継承(異なるパッケージ)×(利用不可)

例えば、次のようなクラス「Cat」があり、フィールドにprivateの変数「name」を定義しています。

privateの例

privateのアクセス修飾子は、外部から利用することはできないので、次のようにパッケージに関わらず外部のクラスから利用するとコンパイルエラーが発生します。

privateは外部から利用できない

終わりに

本記事では、Javaのアクセス修飾子について紹介しました。

次回の記事では、Javaの継承について紹介します。

次回の記事

helpful