どのようにその出力を生成するのか、理解できないコードがあります。これが以下のコードです-
コード:
class Bird {
{ System.out.print("b1 "); }
public Bird() { System.out.print("b2 "); }
}
class Raptor extends Bird {
static { System.out.print("r1 "); }
public Raptor() { System.out.print("r2 "); }
{ System.out.print("r3 "); }
static { System.out.print("r4 "); }
}
class Hawk extends Raptor {
public static void main(String[] args) {
System.out.print("pre ");
new Hawk();
System.out.println("hawk ");
}
}
出力:
r1 r4 pre b1 b2 r3 r2 hawk
質問:
このコードに関する私の具体的な質問は-
Hawk
クラスがインストールされると、クラスがインストールさRaptor
れるため、静的コード ブロックが最初に実行されます。ただし、印刷する前に、静的コードの後に非静的コードを続ける必要がありますpre
。ではない?- これらの非静的初期化ブロックは、実際にはコンストラクターのように機能しているようです。では、これらは通常のプログラミングでコンストラクターとして使用できますか?