【くらす】

クラス とは?

最終更新:
💡 オブジェクトを量産するための「たい焼きの型」

データ(プロパティ)と処理(メソッド)をひとまとめにした設計図のことで、この設計図からオブジェクトを生成して使うオブジェクト指向の基本概念。

📌 このページのポイント
クラスと、そこから作るインスタンス 犬クラス 属性:名前など メソッド:吠える ポチ それぞれの名前 マロン それぞれの名前 レオ それぞれの名前 生成 個々の値と、共有するデータ・処理を区別 生成・初期化の構文は言語による
矢印は犬クラスから具体的なインスタンスを生成する関係。3匹の名前は個別の属性の例で、すべてのデータやメソッドが各インスタンスへ複製されるという意味ではない。クラス自体もオブジェクトである言語がある。
ひよこ ひよこ
関数だけじゃダメなの?
ペンギン先生 ペンギン先生
関数だけでも書けるよ。クラスは、たとえば犬の名前などのデータと、吠えるといった処理を関連づけて定義する方法。プログラムの目的に合わせて使うもので、どの場面でも必要というわけではないんだ。
ひよこ ひよこ
インスタンスって何?
ペンギン先生 ペンギン先生
クラスから作った具体的なオブジェクトだよ。たい焼きの型と、そこから焼いたたい焼きの関係に例えられるね。同じ犬クラスでも、ポチとレオのようにインスタンスごとに違う名前を持たせられるんだ。
ひよこ ひよこ
どうやって作るの?
ペンギン先生 ペンギン先生
JavaScriptならnew Dog()のようにnewで作り、constructorに初期化処理を書けるよ。PythonならDog()のようにクラスを呼び、初期化には__init__を使う。newやconstructorという名前が全言語共通なのではないんだ。
ひよこ ひよこ
名前を変えたら、ほかの犬も変わる?
ペンギン先生 ペンギン先生
その犬だけの属性なら、通常はほかの犬の値とは別だよ。ただし、共有するデータもある。たとえばPythonでクラス変数にリストを置くと、複数のインスタンスから同じリストを見ることになるので、個別の値との違いに注意しよう。
ひよこ ひよこ
JavaScriptのclassも同じ仕組み?
ペンギン先生 ペンギン先生
オブジェクトの共通の性質を定義する点は似ているよ。JavaScriptのclassはプロトタイプを基礎にしていて、クラス独自の規則もある。通常のインスタンスメソッドはプロトタイプ上で共有されるので、全部の処理が各オブジェクトへコピーされるという意味ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「クラス」って出てきたら「データと処理をまとめたオブジェクトの設計図」と思えばだいたいOK!
📖 おまけ:英語の意味
「class」 = 分類、種類
💬 同じ性質を持つものの分類という意味だよ。プログラミングでは、オブジェクトの共通した性質や振る舞いを定義するものとして考えると分かりやすいね。

参考資料

← 用語集にもどる