質問: new SecondClass(2); ``` のインスタンス生成の際、SecondClass内のコンストラクタ「SecondClass (int x)」で「this();」の明示的な呼び出しがあるので、FirstClass内のコンストラクタ「FirstClass ()」は呼び出しがかからないと考えたのですが、異なるようでした。 上記につきましてどのように処理されているのか解説していただけないでしょうか。 初歩的な質問で申し訳ございませんが、よろしくお願いいたします。
回答: FirstClass - SecondClass - ThirdClass と継承されているという体で話を進めます。 `new SecondClass(2)`のとき、`SecondClass (int x)`のコンストラクタが呼ばれます。 この最初に`this()`があるので、`SecondClass ()`のコンストラクタが起動します。 そしてそこで暗黙的に`super()`、つまり`FirstClass ()`のコンストラクタが起動します。 (もっと言うなら、更に親クラス`Object()`が起動する) 結局、まず`FirstClass ()`のコンストラクタが処理され、その後`SecondClass ()`が処理され、そして`SecondClass (int x)`の`this()`よりあとの処理が行われます。 親クラスの初期化処理を確実に行うため、このような仕組みになっています。