インスタンスとは、オブジェクトの実体の事を指す。
オブジェクトを実体化させることは、インスタンス化と呼ばれる。
概要
クラスベースのオブジェクト指向言語において、通常、クラスにアクセスする事は出来ない。
クラスからインスタンス化を行い、生成された実体に対してアクセスを行う。
但し、言語によっては、直接アクセスすることの出来る、静的クラスを作れる物もある。
この静的クラスに対しては、インスタンス化を行うことは出来ない。
また、継承を前提として作られた抽象クラスも、静的クラスと同様にインスタンス化を行うことは出来ない。
具体例
例えば何かのパーティーがあって「フレンチシェフを三人手配してくれ」という要望があるとしよう。
しかし会場にやってくるのは田中シェフや鈴木シェフや加藤シェフであって「フレンチシェフ」という人間が世の中にいるわけではない。つまり「フレンチの料理ができる人間」という概念(クラス)と、それに該当する能力を持った具体的な個人(インスタンス)の割り当てが行われるのであり、このような関係がクラスとインスタンスというわけである。
静的クラス
このようにクラスとはそもそも抽象的な存在なので具体的なインスタンスなしで使うということは基本できないのであるが、場合によってはクラス-インスタンスで分けるのがしっくりこないことがある。例えば「地球」みたいなものは常時一個しかないので、クラスだインスタンスだと分けることはせず、いつでもどこでも使えることにしておいたほうが手っ取り早い。これが静的クラスと呼ばれるインスタンスである。
抽象クラス
ところでクラス自体抽象的な存在だといったが、それでも「フレンチシェフ」というのはなんの説明もない「シェフ」よりは具体的である。もし「シェフを手配してくれ」とだけ要求を出したら「中華か?和食か?フレンチか?」と聞き返されるだろう。つまりそれだけでは抽象的すぎてどう扱っていいかわからないものは「これだけではインスタンス化できませんよ」とマークする必要があり、こうしたものが抽象クラスとなる。
なお具体-抽象の関係は相対的なのでここで上げた例もケースバイケースである。何が具体で何が抽象かはそのプログラムの内容による。
関連項目
- 4
- 0pt