オブジェクト指向 ・ 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." が付いているかどうかで区別されています。

インスタンスは独立している

このチャプターの続きは受講生限定です

本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。

料金プランを見る