おぼえがき_コンストラクタ

//オブジェクトの生成
Test test = new Test();

オブジェクトtestが生成されると同時に、Testクラスの中の特殊なメソッドTest()が実行される。
特殊なメソッドを「コンストラクタ」と呼ぶ。

コンストラクタは、
 ・オブジェクト生成時、すぐに実行されるメソッド。
   →フィールドの初期値設定がよく行なわれる。
 ・書かなくても良い。
 ・戻り値を持たないメソッド。
 ・引数を持たせることができる。
 ・オーバーロードできる。
 ・既に作られていたオブジェクトのコピーを作ることができる。

//コンストラクタに引数を持たせた

class Test {
 int m;
 int n;
 Test(int i,int j){
  m = i;
  n = j;
 }
 int sum(int i,int j){
  return m+n+i+j;
 }
}
public class sample19{
 public static void main(String[] args){
  Test test = new Test(10,5);
  System.out.println(test.sum(2,3));
  Test test2 = new Test(10,0);
  System.out.println(test2.sum(2,3));
 }
}

実行結果
20
15


//引数が渡されるコンストラクタオーバーロードで区別している。
//オブジェクトをコピーして、コンストラクタに設定。

class Test{
 int m;
 int n;
 Test(int i,int j){
  m=i;
  n=j;
 }
 Test(Test testC){
  m=testC.m;
  n=testC.n;
 }
 int sum(int i,int j){
  return m+n+i+j;
 }
}
public class sample19{
 public static void main(String[] args){
  Test test = new Test(10,5);…(1)
  test.m++;…(2)
  test.n++;…(3)
  Test test2 = new Test(test);…(4)
  System.out.println(test2.sum(2,3));…(5)
 }
}

実行結果
22

(1)…iに10、jに5が代入される。mに10、nに5が代入される。
(2)…test.mが11になる。
(3)…test.nが6になる。
(4)…test2.mにtest.m、test2.nにtest.nが代入される。
(5)…11+6+2+3=22。