
Java入門|9章のまとめ
戦士を守り、育て、進化させる設計へ クラスの力を極める章
この章では、これまで作ってきた「戦士(オブジェクト)」を、より安全に、より強く扱うための仕組みを学んできました。
ドラゴンボールの世界で考えると、ただ戦士を生み出すだけでは不十分です。
正しい修行をさせる、危険な行動を防ぐ、状況に応じて技を使い分ける、といったルールが必要になります。
Javaのクラスも同じで、単なるデータの入れ物ではなく、
安全に扱うためのルール(アクセス制御)や柔軟な動きを実現する仕組み(オーバーロード・コンストラクタなど)を持っています。
ここでは、9章で学んだ内容をドラゴンボールの世界観で整理していきます。
メンバを守る仕組み(アクセス制御)
戦士の内部状態である戦闘力や気は、外部から自由に変更できてしまうと問題が発生します。
たとえば、外から無理やり負の気を設定されると、明らかに不自然な状態になります。
これを防ぐために使うのが private と public です。
| 種類 | 役割 |
|---|---|
| private | クラス内部だけで扱う |
| public | 外部から利用できる |
設計の基本は次の通りです。
- フィールドは private にする
- 操作は public メソッド経由にする
これにより、戦士の状態は安全に管理されます。
カプセル化の考え方
カプセル化とは、
内部のデータを隠し、安全な操作だけを外に公開する
という考え方です。
ドラゴンボールのイメージでは、
- 戦闘力や気は直接触れない
- 技(メソッド)を通してのみ操作する
という状態です。
この設計によって、
- 不正な値の代入を防げる
- プログラムの不具合を減らせる
という効果があります。
同じ名前で使い分ける仕組み(オーバーロード)
同じ名前のメソッドでも、引数が異なれば別の処理として定義できます。
これがオーバーロードです。
ドラゴンボールで考えると、同じ「技」でも使い方が変わるイメージです。
| 呼び出し | 処理内容 |
|---|---|
| setSaiyan(9000) | 戦闘力だけ設定 |
| setSaiyan(20.5) | 気だけ設定 |
| setSaiyan(9000, 20.5) | 両方設定 |
引数の違いによって、自動的に適切な処理が選ばれます。
これは多態性(ポリモーフィズム)の基本となる重要な仕組みです。
コンストラクタの役割
コンストラクタは、オブジェクトが作られる瞬間に実行される処理です。
戦士が誕生した瞬間に、初期状態が決まるイメージです。
- 初期戦闘力
- 初期の気
これらを自動的に設定するために使われます。
コンストラクタのオーバーロード
コンストラクタも複数定義できます。
引数が異なることで、異なる初期状態を作ることができます。
| 作成方法 | 初期状態 |
|---|---|
| new Saiyan() | デフォルトの戦士 |
| new Saiyan(9000, 20.5) | 指定された能力を持つ戦士 |
これにより、用途に応じたオブジェクト生成が可能になります。
インスタンスとクラスの違い
ここでは「個」と「全体」の違いが重要です。
インスタンス(個別の戦士)
- 悟空の戦闘力
- ベジータの気
各オブジェクトごとに異なる値を持ちます。
クラス(全体)
- サイヤ人の総人数
すべてのオブジェクトで共有される情報です。
整理表
| 種類 | 内容 | 例 |
|---|---|---|
| インスタンス変数 | 個別のデータ | power |
| インスタンスメソッド | 個別の処理 | show() |
| クラス変数 | 全体で共有 | count |
| クラスメソッド | 全体の処理 | showCount() |

この図では、9章の要素がすべてつながっています。
- 鍵アイコン → private(外から直接触れない)
- 扉アイコン → public(安全に操作する入口)
- count → 全体で共有される情報
- goku と vegeta → 個別のオブジェクト
つまり、
- 内部は守る
- 外部には安全な操作だけ公開する
- 個別と全体を使い分ける
という構造になっています。
この9章で身につけた本質
この章で学んだ内容を一言で表すと次の通りです。
クラスは、安全で柔軟なプログラムを作るための設計図である
- private によって内部を守る
- public によって安全に操作する
- オーバーロードで柔軟に対応する
- コンストラクタで初期状態を制御する
- static で全体を管理する
これらを組み合わせることで、壊れにくく、使いやすいプログラムを設計できるようになります。
