【くらす】

クラス とは?

💡 オブジェクトを量産するための「たい焼きの型」
📌 このページのポイント
クラスとインスタンスの関係 クラス(設計図) 「犬」クラス 属性: 名前, 犬種, 年齢 動作: 吠える(), 走る() テンプレート(実体なし) new インスタンス1 名前:ポチ 犬種:柴犬 年齢:3 インスタンス2 名前:マロン 犬種:トイプードル 年齢:5 インスタンス3 名前:レオ 犬種:ゴールデン 年齢:2 実体(メモリ上に存在)
クラスは設計図、インスタンスはそこから作られた実体
ひよこ ひよこ

関数だけじゃダメなの?なぜクラスが必要?

ペンギン先生 ペンギン先生

関数だけでもプログラムは書けるけど、「ユーザーの名前・メールアドレス・ログイン処理」のように関連するデータと処理をバラバラに管理すると、規模が大きくなったとき混乱する。クラスでまとめると整理しやすい。

ひよこ ひよこ

インスタンスって何?

ペンギン先生 ペンギン先生

クラスという設計図から実際に作り出したモノのこと。たい焼きの型(クラス)から焼いた1個のたい焼き(インスタンス)をイメージするとわかりやすい。型は1つでも、たい焼きは何個でも作れる。

ひよこ ひよこ

最近はクラスを使わないって聞いたけど?

ペンギン先生 ペンギン先生

Reactの関数コンポーネントのように、クラスを使わないスタイルも増えている。ただ、クラスの概念を理解しておくとライブラリの内部構造やTypeScriptの型定義が読めるようになるので、知識としては必須。

ひよこ ひよこ

クラスと構造体(struct)って何が違うの?

ペンギン先生 ペンギン先生

言語によるけど、C#ではクラスは参照型でstruct値型、C++ではデフォルトのアクセス修飾子がクラスはprivateでstructはpublic、という違いがあるよ。Goにはクラスがなくstructだけで、メソッドはstructに関連づけて定義する。実は「クラスベースのオブジェクト指向」と「プロトタイプベース」という2つの流派があって、JavaScriptのclassは内部的にはプロトタイプチェーンの糖衣構文なんだ。見た目はクラスだけど仕組みが違うから、継承の挙動で戸惑うことがあるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
クラスって出てきたら「データと処理をまとめたオブジェクトの設計図」と思えばだいたいOK!
📖 おまけ:英語の意味
「class」 = 分類、種類
💬 同じ性質を持つモノをひとつのグループ(分類)にまとめるという意味から
← 用語集にもどる