javaのthisとsuperの理解の為に下記のようなクラスで実験してみているのですが、 少し解らない箇所が出てきました。 コメントアウト行(1)に書いたようにsuper()を書くとエラーが発生してしまいます。 確かsuper()はコンパイラが自動的にコンストラクタが実行された時1行目に挿入している。 と覚えていたので明示的にしようとしたのですが、どうやら認識違いのようでして、だとしたら Q1:super()はいつ呼ばれているのでしょうか? また、ConstThisTestは暗黙的にObjectクラスを継承しているはずなので Q2:Objectクラスのコンストラクタが呼ばれているはずですが、 いつ呼ばれているかをログなどで確認する方法はありますでしょうか? 因みに開発環境はeclipseを使用しております。 尚javaのバージョンやeclipseのバージョン等は 今回は関係ないかなと思うので記載しておりません。 以上 何卒宜しくお願い致します。 --------------------------------------------------------- public class ConstThisTest { int constValue = 0 ; public ConstThisTest(int constValue) { this.constValue = constValue; } public ConstThisTest() { /* (1)super()を書くとthis()は1行目にかかないと コンストラクタ内の最初のステートメントであることが必要とエラーが出る。 */ this(-1); } public void printValue(){ System.out.println("constValue = " + constValue); } } public class ConstThisTestMain { public static void main(String[] args) { ConstThisTest ct = new ConstThisTest(); ct.printValue(); } }
↧