インスタンス
出典: フリー百科事典『ウィキペディア(Wikipedia)』
計算機科学でのインスタンス(instance)とは、オブジェクトの実体のことをいう。instanceは英語で「実例」を意味する。オブジェクト指向言語においては、多くの場合クラスと呼ばれるものを元に作成したオブジェクトの実体を指す。データモデルやオブジェクト指向設計においても用いられる用語である。
目次 |
[編集] インスタンス化
インスタンス化 (Instantiation)とは、メンバまたはクラスのインスタンスであるオブジェクトを生成するプロセスである。インスタンスを生成することを指す。(インスタンスを生成することを意味する動詞インスタンス化するの英語はinstantiate)。
通常、これはコンストラクタを明示的に書くことで実行されるが、JavaやVBはソースコードに直接記述する必要がないデフォルトコンストラクタの使用をプログラマに与えることもできる。
[編集] インスタンスの例
例えば、Javaの場合で以下のクラスを作ったとする。
public class InstanceMaker { private String name; public InstanceMaker(final String name){ this.name = name; } public String getName(){ return this.name; } public void setName(final String name){ this.name = name; } }
このクラスからインスタンスを生成するには
InstanceMaker instance = new InstanceMaker("名前");
とする。ここでインスタンスが生成される。このインスタンスでインスタンスメソッドInstanceMaker#getName()
を実行するには、
instance.getName();
とする。インスタンスメソッドとは、static
(静的)ではない、インスタンスからのみ呼び出せるメソッドのことである。このメソッドによって得られる文字列は、
名前
となる。 ここで、オブジェクトinstance
の中身を変えたい時には、
instance.setName("新しい名前");
とする。ここで再びInstanceMaker#getName()
を実行すると、同じオブジェクトでも得られる文字列は
新しい名前
となる。これは、インスタンスメソッドInstanceMaker#setName()
によってinstance
オブジェクトのインスタンスが変わったことを意味する。 このように、同じオブジェクトでもメソッドなどの動きによってオブジェクトの状態が異なる。そのときの一つ一つの状態のことをインスタンスと呼ぶ。
[編集] インスタンスの喩え
インスタンスとクラスとの関係は、わかりやすく説明するために、しばしば様々なものに喩えられることがある。喩え方によってはかえってわかりづらくなり逆効果になることもある。
[編集] 設計図
クラスが設計図に相当し、インスタンスが設計図から作り上げた実物であるという喩え。
[編集] スタンプ、型抜き
スタンプ、型抜きがインスタンスを生成するクラスに相当し、スタンプによって押される印字、型抜きによってできあがるお菓子がインスタンスに相当するという喩え。
[編集] プラトンのイデア論による喩え
プラトン哲学において、クラスがイデアに相当し、そのクラスから実際に生成されるインスタンスがこの現実世界に存在するものを意味する実体と喩えられる。
[編集] 関連項目
- オブジェクト指向プログラミング
- オブジェクト (プログラミング)
- クラス (コンピュータ)
- オブジェクトライフタイム (ライフサイクル)