Java知識(二):親子クラスの呼び出し順を継承する
7703 ワード
親コード
世代のサブクラスコード
にだいサブクラスコード
しゅプログラムコード
テスト結果
要約:staticキーワード修飾を使用して、クラスがインスタンスオブジェクトより大きいと宣言します.したがって、クラスでは、static(メソッドまたはコードブロック)→通常(メソッドまたはコードブロック)→コンストラクション関数の順に実行されます.
継承関係のある子親クラスでは、親静的(メソッドまたはコードブロック)→子静的(メソッドまたはコードブロック)→親非静的(メソッドまたはコードブロック)→親構造関数→子非静的(メソッドまたはコードブロック)→子構造関数
package cn.test;
public class Root {
static {//
System.out.println("Root ");
}
{//
System.out.println("Root ");
}
public Root() {//
System.out.println("Root ");
}
}
世代のサブクラスコード
class Mid extends Root{
static {//
System.out.println("Mid ");
}
{//
System.out.println("Mid ");
}
public Mid() {//
System.out.println("Mid ");
}
public Mid(String msg) {//
this();// Mid
System.out.println("Mid "+msg);
}
}
にだいサブクラスコード
class Leaf extends Mid{
static {//
System.out.println("Leaf ");
}
{//
System.out.println("Leaf ");
}
public Leaf() {//
super("Mid");// Mid , Mid
System.out.println(" Leaf ");
}
}
しゅプログラムコード
public static void main(String[] args) {
new Leaf();
}
テスト結果
Root
Mid
Leaf
Root
Root
Mid
Mid
Mid Mid
Leaf
Leaf
要約:staticキーワード修飾を使用して、クラスがインスタンスオブジェクトより大きいと宣言します.したがって、クラスでは、static(メソッドまたはコードブロック)→通常(メソッドまたはコードブロック)→コンストラクション関数の順に実行されます.
継承関係のある子親クラスでは、親静的(メソッドまたはコードブロック)→子静的(メソッドまたはコードブロック)→親非静的(メソッドまたはコードブロック)→親構造関数→子非静的(メソッドまたはコードブロック)→子構造関数