JAvaコンストラクション関数の実行

2171 ワード

JAvaは、オブジェクトを作成するときにそのコンストラクション関数を実行します.それだけでなくjavaは親クラスの構造関数を実行し、親がいないまで1級1級上に進みます.初心者にとって、3つの問題が分かりにくいです.
1、親のコンストラクション関数は必ず実行されますか?
2、子クラスのコンストラクション関数を先に実行しますか、それとも親クラスのコンストラクション関数を先に実行しますか.
3、親に複数のコンストラクション関数がある場合、Javaはどれを選択しますか?
-親のコンストラクション関数は必ず実行されますか?
はい、親のコンストラクション関数は必ず実行されます.したがって、クラスの階層が深い場合は、オブジェクトを作成するときに多くのコンストラクション関数を実行します.
-子クラスのコンストラクション関数を先に実行しますか?それとも親クラスのコンストラクション関数を先に実行しますか?
Javaは継承構造に沿って上へObjectを見つけ、Objectから順にコンストラクション関数を実行します.親のコンストラクション関数を先に実行すると、子のコンストラクション関数が実行されるときに親のメンバーが初期化されているかどうかを心配する必要はありません.
-親に複数のコンストラクション関数がある場合、Javaはどれを選択しますか?
親クラスに複数のコンストラクション関数がある場合、サブクラスはコンストラクション関数の1つ(最大1つのみ)を選択して実行できます.サブクラスが選択されていない場合、Javaは親クラスのデフォルトのコンストラクション関数を実行します.次に例を示します.
親:
public class SuperClass {

    public SuperClass(){
        System.out.println("super class constructed.");
    }

    public SuperClass(String name){
        System.out.println("super class constructed with name: " + name);
    }
}

public class SuperClass {

    public SuperClass(){
        System.out.println("super class constructed.");
    }

    public SuperClass(String name){
        System.out.println("super class constructed with name: " + name);
    }
}

  サブクラス:
public class SubClass extends SuperClass {

    public SubClass(){

        System.out.println("sub class constructed.");

    }

    public SubClass(String name){

        //             。       ,       。     ,             

        //                 ,    public SuperClass(String name)     。      

        //  ,                        。

        super(name);

        System.out.println("sub class constructed with name: " + name);

    }

    public static void main(String[] args) {

        new SubClass();

        new SubClass("world");

    }

}