プログラミングの用語一覧へ
このページの目次

アクセス修飾子とは?

最終更新:2026/08/18

3秒でわかる

クラスの中身をどこから触れるかを決めるキーワード。public と private を使い分けて、壊されたくない部分を外から隠すために使います。

もう少し詳しく

どういうものか

アクセス修飾子は、クラスやフィールドメソッドに付けて、どの範囲のコードからアクセスできるかを指定するキーワードです。Java では public、protected、無指定(パッケージプライベート)、private の 4 段階があります。

範囲は下記の順に狭くなります。

public どこからでも protected 同じパッケージ + サブクラス (無指定) 同じパッケージのみ private 同じクラス内のみ

TypeScript にも public、protected、private があります。ただし TypeScript のものはコンパイル時の検査だけで、生成された JavaScript には残りません。実行時にも隠したい場合は #field という private フィールド記法を使います。

なぜ必要か

フィールドを public にすると、外部のどのコードからでも代入できます。残高を持つクラスの balance が public なら、入出金メソッドを通さず負の値を直接書き込めてしまいます。書き込み口をメソッドだけに絞れば、そこに検査を 1 つ置くだけで不正な状態を防げます。

もう 1 つは変更のしやすさです。private なフィールドは外から参照されていないと保証できるため、を変えても名前を変えても影響はクラス内に閉じます。public にした瞬間、それは他人と交わした約束になります。

具体例

public class BankAccount { private int balance; // 外から直接触れない public BankAccount(int initial) { if (initial < 0) throw new IllegalArgumentException("初期残高が負です"); this.balance = initial; } public void withdraw(int amount) { if (amount <= 0) throw new IllegalArgumentException("金額が不正です"); if (amount > balance) throw new IllegalStateException("残高不足です"); balance -= amount; } public int getBalance() { return balance; } }

account.balance = -500; はコンパイルエラーになります。残高を変える道は withdraw だけなので、検査を回避できません。

つまずきやすいところ

Java で修飾子を書き忘れると public にはならず、パッケージプライベートになります。同じパッケージ内では動くのに、別パッケージから使うと突然コンパイルが通らなくなるのはこれが原因です。

もう 1 つは、private にしたうえで getter と setter を機械的に全フィールドへ付ける習慣です。setter が全部あるなら public フィールドと保護の強さは変わりません。外から変えて良い値だけに setter を用意します。

似た用語との違い

用語内容
アクセス修飾子可視範囲を指定する言語機能
カプセル化内部を隠して操作をメソッドに集約する設計の考え方
final再代入や継承を禁じる。可視範囲とは別の軸


覚え方

既定は private から始め、外に見せる必要が出たものだけ public に上げます。逆向きに狭めるのは後から難しくなります。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地アクセス修飾子プログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

このコースが入っている学習分野

この用語を扱うコース

コース

Java入門:基礎文法編

69レッスン
コース

TypeScript入門:型を付けて関数を書く

22レッスン
コース

Java Silver対策

55レッスン
Javaコースの全編を見る