アクセス修飾子: カプセル化
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: すべて publicpublic 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); }}パターン
// カプセル化パターン
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
サブクラスからのみアクセスできるメソッドを作成してください。