🧱
🧱 カプセル化・アクセス修飾子・継承の完全整理
🧱 オブジェクト指向の基本概念まとめ
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