オブジェクト指向 ・ Chapter 2
クラスの基本
記事 ・ 冒頭を無料公開中
前の章で、オブジェクト指向は「データと処理をひとまとめにする方針」で、その道具がクラスだと分かりました。この章では、そのクラスの文法を一から身につけます。
・ class: クラスを定義する
・ constructor: 初期化の処理
・ new: クラスからインスタンスを作る
・ this: 「自分自身」を指す
覚える単語は4つだけです。この4つで、前の章で見た "BankAccount" のようなコードが全部自分で書けるようになります。
クラスは設計図、インスタンスは実物
まず、この講座全体を支える区別から入ります。
クラスは設計図です。「キャラクターとは、名前とHPを持ち、ダメージを受けられるものだ」という定義そのもの。設計図の段階では、まだ具体的なキャラクターは1人も存在しません。
インスタンスは、設計図から作られた実物です。設計図が1枚あれば、実物は何個でも作れます。勇者も、魔王も、スライムも、同じ「キャラクター」という設計図から。
最小のクラスを書いて、実物を作ってみましょう。
▶︎実行してみよう
「勇者」「100」と表示されます。パーツを分解します。
| 部品 | 役割 |
|---|---|
| class Character { ... } | 設計図の定義。中にプロパティとメソッドを書く |
| name: string; | この設計図から作られる実物が持つデータ(プロパティ)の宣言 |
| constructor(...) | 実物が作られる瞬間に1回だけ自動で動く初期化処理 |
| new Character("勇者", 100) | 設計図から実物(インスタンス)を作る。引数はconstructorに渡る |
流れを言葉にすると:
①new が実行される →
②まっさらなインスタンスが用意される →
③constructor が動いて、引数の「勇者」と100がプロパティに書き込まれる →
④完成品が hero に入る。
this:「自分自身」のこと
constructorの中にあった this.name = name; の this が、クラス文法で最初のつまずきポイントです。正体はシンプルで、this =「いま作られている(または操作されている)インスタンス自身」 です。
this.name = name; は「自分のnameプロパティに、引数で受け取ったnameを入れろ」。左の this.name はインスタンスのプロパティ、右の name はconstructorの引数は同じ単語ですが別物で、"this." が付いているかどうかで区別されています。
インスタンスは独立している
このチャプターの続きは受講生限定です
本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。