【Java開発】第14回 アクセス制御子

Java入門講座

はじめに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はアクセス制御子について説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第13回 変数のスコープです。

アクセス制御子

Javaはアクセス制御子というものを使って、クラス及びクラスの構成要素が使われる範囲を制限することができます。

アクセス制御子は4つの種類が存在し、様々接近できる範囲が異なります。

アクセス制御子はクラス、フィールド、メソッドに付与することができます。

※メソッドの中で生成されたローカル変数はメソッドが終了されるとなくなるので、アクセス制御子がいりません。

public

publicはクラス、メソッド、フィールドに付与されるアクセス制御子です。

publicが付与されると対象は同じパッケージのクラスと子供クラス、

ほかのパッケージのクラスと子供クラスからの接近を許可します。

サンプル
・対象クラス

・同じパッケージのクラスからアクセスした場合

・同じパッケージの子供クラスからアクセスした場合

・ほかのパッケージのクラスからアクセスした場合

・ほかのパッケージの子供クラスからアクセスした場合

上記のサンプルで確認できるように、publicを付与されたフィールドとメソッドは
同じパッケージのクラスと子供クラス、ほかのパッケージのクラスと子供クラスからの接近を許可します。

protected

protectedはフィールドとメソッドに付与することができます。

サンプル
・対象クラス

・同じパッケージのクラスからアクセスした場合

・同じパッケージの子供クラスからアクセスした場合

・ほかのパッケージのクラスからアクセスした場合

・ほかのパッケージの子供クラスからアクセスした場合

上記のサンプルで確認できるように、同じパッケージのクラスと子供クラス、
ほかのパッケージの子供クラスからアクセスすることができます。

default

defaultはアクセス制御子を付与しなかった状態を意味します。

defaultになれる要素はクラス、フィールド、メソッドです。

defaultは同じパッケージのクラスと子供クラスしかアクセスできないので、package privateとも呼ばれます。

サンプル
・対象クラス

・同じパッケージのクラスからアクセスした場合

・同じパッケージの子供クラスからアクセスした場合

・ほかのパッケージのクラスからアクセスした場合

・ほかのパッケージの子供クラスからアクセスした場合

上記のサンプルで確認できるように、同じパッケージからのアクセスしかできません。

private

privateはとこからアクセスしてもアクセスすることができません。

privateが付与されたフィールドはそのフィールドを扱うpublicメソッドを使って値を操作します。

メソッドの場合はクラス内部で使われるメソッドに付与します。

・対象クラス

・同じパッケージのクラスからアクセスした場合

・同じパッケージの子供クラスからアクセスした場合

・ほかのパッケージのクラスからアクセスした場合

・ほかのパッケージの子供クラスからアクセスした場合

上記のサンプルで確認できるように、すべてのアクセスができないようになりました。

普通にはprivateフィールドは専用のpublicメソッドを使って操作します。

上記のgetValueとsetValueメソッドを利用してprivateフィールドvalueを操作します。

実行結果
10

クラスに付与されたアクセス制御子

クラスにはpublicとdefaultを付与することができます。

publicが付与されたクラスはどこでもインスタンスを生成して使えるし、

作成されたファイル名とクラス名が一致するクラスしか作成できません。

defaultクラスはほかのパッケージのクラスにimportすることができません。

サンプル

上記のサンプルで確認できるように、publicクラスはファイル名と名前が一致する
クラスしか作成できません。

同じパッケージのクラスにはpublicクラスとdefaultクラスを生成することができます。

ほかのパッケージのクラスにはdefaultクラスはimportができないので、生成することもできません。

終わりに

今回の記事は以上になります。

次回はJavaのオーバーロードを学びましょう。

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

Java入門講座
スポンサーリンク
dreamhanksをフォローする
スポンサーリンク
DreamHanks Blog

コメント