コードコピーは次のとおりです。
パブリッククラスは、ベースを拡張します
{
プライベートメンバーM1 =新しいメンバー( "メンバー1");
{
system.out.println( "initial block()");
}
public derive(){
System.out.println( "derive()");
}
プライベートメンバーM2 =新しいメンバー( "メンバー2");
private int i = getint();
private int getInt()
{
system.out.println( "getint()");
戻る2;
}
public static void main(string [] args)
{
new derive();
}
}
クラスベース
{
パブリックベース()
{
System.out.println( "base()");
}
}
クラスメンバー
{
パブリックメンバー(文字列M)
{
System.out.println( "member()"+m);
}
}
/*プログラム出力:
ベース()
メンバー()メンバー1
初期ブロック()
メンバー()メンバー2
getint()
derive()
*/
結論は次のとおりです。静的メンバーの初期化を考慮せずに、オブジェクトのコンストラクターを呼び出すとき、プログラムは最初に親クラスのコンストラクターを呼び出します(親クラスのコンストラクターはスーパーキーワードを介して指定できます。デフォルトで呼び出されます。サブクラスのコンストラクターの最初の行で呼び出されます変数には指定された値があり、デフォルト値が割り当てられていません。つまり、タイプが0またはfalseなどであり、オブジェクトは最終的に独自のコンストラクターを呼び出します。