JavaやC言語、TypeScript、Pythonなどのプログラミング言語では
「クラス」と「インスタンス」という言葉を使う。
(もちろんここで述べたプログラミング言語だけではありません)
この記事では、この違いについて簡単に分かりやすく説明する。
クッキーで例えるざっくりとした違い
クラスとインスタンスの違いをクッキーで例えると、金型とクッキーそのもののような違いがある。
- クラス:クッキーの金型
- インスタンス:出来上がったクッキーそのもの
クラス
クラスは、インスタンスを作るための設計図であり、
これを元に作成したインスタンスが
- どのような情報を持つか
- どのような機能を持つか
を定義する。
例として、クッキークラスを作成するのであれば以下のようになる。
class Cookie {
/**
* クッキーの形の情報
*/
private shape: string
constructor(shape: string) {
this.shape = shape;
}
}
インスタンス
インスタンスは、クラスを元に作成された実物そのものである。
例として、先ほど定義したCookieクラスから
Cookieの実物starCookie
を作成する場合、以下のようにする。
const starCookie = new Cookie("star");
この作業は「インスタンスを作成する」と言う。
オブジェクト指向の言語では「オブジェクトを作成する」と言う場合もあるが、
インスタンスもオブジェクトもどちらもほぼ同じだと考えていて大きな問題はない。
オブジェクト指向の考え方をしている場合、starCookie
のことをオブジェクトと呼ぶためだ。
まとめ
- クラス:インスタンスを作るための設計図。クッキーの金型。
- インスタンス:クラスを元に作成された実物。焼けたクッキー。
- オブジェクト:インスタンスとほぼ一緒。正直どっちで呼んでても気にしない。