🧱
🧱 カプセル化・アクセス修飾子・継承の完全整理
🧱 オブジェクト指向の基本概念まとめ
1. カプセル化(Encapsulation)
データを直接触れないように隠し、
getter/setterメソッドを通してのみアクセス可能にする仕組み。
| 構成要素 | 意味 | 例 |
|---|---|---|
| private変数 | 外部から直接アクセス ❌ | private String name; |
| getter | 値を読み取るメソッド | public String getName() |
| setter | 値を設定するメソッド | public void setName(...) |
🔒 → 変数は private で隠す
🔓 → メソッドを通してのみ操作 → ミス防止 & 保護
2. アクセス修飾子(Access Modifier)
クラス、変数、メソッドなどのアクセス範囲を定義するキーワード。
| 修飾子 | 同じクラス | 同じパッケージ | サブクラス | 他のクラス |
|---|---|---|---|---|
public |
✅ | ✅ | ✅ | ✅ |
protected |
✅ | ✅ | ✅ | ❌ |
| (default) | ✅ | ✅ | ❌ | ❌ |
private |
✅ | ❌ | ❌ | ❌ |
- カプセル化のとき:
privateで隠す - 必要なときのみ:
publicで外に公開
3. 継承とアクセス修飾子の関係
継承 = 親から子へ「引き継ぐ」仕組み
アクセス修飾子 = 子がその「引き継いだものを使えるか」決めるもの
- ✅ 継承自体は常に行われる
- ❌
privateなメンバは継承されても子クラスから直接アクセスできない - ✅
protectedは子クラスからアクセス可能 → 継承時によく使われる
class Parent {
private int a = 1; // ❌ 子クラスからアクセス不可
protected int b = 2; // ✅ 子クラスからアクセス可
public int c = 3; // ✅ どこからでもアクセス可
}
class Child extends Parent {
void print() {
// System.out.println(a); ❌
System.out.println(b); // ✅
System.out.println(c); // ✅
}
}
🎯 最終まとめ(一言)
- 🔒 カプセル化:データを隠して安全に管理
- 🧭 アクセス修飾子:どこまでアクセス可能かを制御
- 👶 継承:子に引き継がれるが、実際に使えるかはアクセス修飾子次第
Discussion