0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

javaにおけるpublic private protected

Last updated at Posted at 2025-05-30

はじめに

javaのアクセス修飾子public、private、protectedに関して、「使い方はわかるけど、人に説明するのは難しい…」という方のために、アクセス修飾子についてシンプルに整理した記事です。
保守性・安全性などの観点からも必要となる知識なので一度整理しておきましょう。

アクセス修飾子の種類と意味

  1. public
    すべてのクラスからアクセス可能です。
  2. private
    同じクラス内からのみアクセス可能です。
  3. protected
    同じクラス、同一パッケージ内のクラス、またはサブクラスからアクセス可能です。
  4. 指定なし(デフォルト)
    同一パッケージ内のクラスからのみアクセス可能です。

アクセス範囲の比較表

アクセス修飾子 同一クラス 同一パッケージ サブクラス(別パッケージ) 他パッケージ
public
protected ×
private × × ×
default(指定なし) × ×

※defaultは一般的な呼称であり、アクセス修飾子ではありません

アクセス修飾子の使い分け例

  • public
    → 外部から利用されるメソッドやクラス(例:ライブラリのAPI)

  • private
    → 内部実装に限定したいフィールドや補助メソッド
    ※基本的にフィールド(変数)はprivateにして、必要に応じてgetter/setterで操作するのが基本設計

  • protected
    → 継承を前提としたクラスで、子クラスには見せたいが外部には隠したい要素

  • (指定なし)
    → 「同じパッケージ内だけで使えばいい」ユーティリティクラスなどに使われる

よくある落とし穴

  • protected継承関係がなくても同一パッケージであればアクセスできる
    → 「サブクラスだけに見せたいつもりが、同一パッケージの他クラスからも見えてしまう」ことに注意

  • privateなメンバ変数にアクセスしようとしてエラーになる
    privateにしたメソッドやフィールドはテストや他クラスから直接使えない

  • 修飾子を付け忘れて**デフォルト(パッケージプライベート)**になっていることに気づかない
    → チーム開発では意図せず外部からアクセスされる原因に

まとめ

アクセス修飾子は一見シンプルですが、設計方針やチーム開発において重要な役割を持ちます。
コードの「見せたい」「隠したい」の線引きを意識して、適切に使い分けていきましょう!

参考資料・リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?