アクセス修飾子: カプセル化

public, private, protected で可視性を制御。

public
どこからでもアクセス可。
private
クラス内のみ。
protected
同パッケージ + サブクラス。
Hotel Room Keys

アクセス修飾子は「ホテルの鍵」。 **public** = 誰でも入れるロビー **private** = 客室(本人だけ) **protected** = 家族は入れる

アクセス修飾子

public, private, protected
// アクセス修飾子
public class Person {
public String name; // どこからでもアクセス可
protected int age; // 同じパッケージ + サブクラス
String job; // パッケージプライベート(デフォルト)
private double salary; // このクラス内のみ
public void doWork() { } // public メソッド
private void calculate() { } // private メソッド
}
// 可視性の範囲
// public > protected > default > private
// どこでも サブクラス 同パッケージ クラス内
可視性の範囲
public > protected > default > private
Bad
// ❌ Bad: すべて public
public class User {
public String password; // 危険!
public void hack() { } // 悪用される
}
Good
// ✅ Good: 最小限の公開
public class User {
private String password; // 隠蔽
public boolean checkPassword(String p) {
return password.equals(p);
}
}

パターン

Encapsulation, final
// カプセル化パターン
public class BankAccount {
private double balance; // private フィールド
// getter
public double getBalance() {
return balance;
}
// 入金(直接代入させない)
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
// 出金(検証ロジック)
public boolean withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
return true;
}
return false;
}
}
// クラス修飾子
public class Outer { // public クラス
private static class Inner { } // private 内部クラス
}
// final 修飾子
public final class Immutable { } // 継承禁止
Tip: フィールドは private、メソッドで公開。

合格ライン

4種類の修飾子を使い分けられる
カプセル化を実装できる

参考リンク

演習課題

課題1: カプセル化
フィールドを private にして getter/setter を追加してください。
課題2: protected
サブクラスからのみアクセスできるメソッドを作成してください。

次のステップ