インスタンス

インスタンスとは、クラスという設計図を元に作られる実体である。

Javaでは、オブジェクトに関して「型(クラス)」と「インスタンス(個々のデータ)」を区別して取り扱っている。
クラスはデータの持つべき性質を定義した「型」と考えればよい。
インスタンスはそのクラスを具体化したもの(実体)と考えればよい。
人間クラスを例に、クラスとインスタンスについて説明を行う。

Javaプログラムの中の宣言では、次のようにクラスは型として、インスタンスは変数として扱われる。

Human takaoka; Human型の変数takaoka
Human watanabe; Human型の変数watanabe
Human sasaki; Human型の変数sasaki
int i; int型の変数i

Humanはクラスの名称である。
takaoka、watanabe、sasakiは変数名(インスタンス名)となる。
実際の人間の情報(名前や職業などのフィールド・名前を教えるなどのメソッド)を記憶するのが、これらのインスタンスということになる。

コンストラクタ

実際にJavaプログラムでクラスを元にインスタンスを生成するためには、「コンストラクタ」というものを呼び出す必要がある。
コンストラクタを呼び出すことにより、インスタンスの初期設定を行う。

コンストラクタの特徴

コンストラクタは特殊なメソッドで、クラス名と同じ名前を持つメソッドである。
通常のメソッドとの違いは以下の通りである。 コンストラクタの定義は以下のように記述する。
アクセス修飾子 コンストラクタ名(引数){
	処理
}

コンストラクタを使いインスタンスを生成するためには、newキーワードを用いて
クラス名 変数名 = new コンストラクタ名(引数);
と記述する。

Human型のインスタンスTakaokaを作る場合の例

	Human Takaoka = new Human();
などと記述する。

「引数つきコンストラクタ」がクラス定義の中に定義されていなければ、何も処理を行わない「引数なしコンストラクタ」はクラス定義の中で明示的に記述しなくても呼び出すことができる。
しかし、引数のあるコンストラクタが定義されていた場合は「引数なしのコンストラクタ」を明示的に記述しなくては呼び出すことができない。
【詳細は継承を学習した後に「継承におけるコンストラクタ」の教科書、「第7回コンストラクタ」の映像を参照】
なので、常に引数なしのコンストラクタを以下のように記述する癖をつけておいたほうがよい。
アクセス修飾子 コンストラクタ名(){
}