javaでコンストラクタの使い方がわかってきてもう怖いものはないと思っていましたが、いずれまたすぐ忘れるかもなので自分用に
とっておきます。コンストラクタは、インスタンスを作る時に初期値を設定するために呼び出されるメソッドのことで、クラス名と
必ず同じ名前でなければなりません。また、コンストラクタのメソッド内でreturnを書いても死ぬのでここも注意ですね。
知らないうちはそんなのメンバ変数を適当に定義しとけばいいじゃんと思っていましたが、コードが大きくなるにつれ結局メンテナンス
が大変になって汚いコードになることを知ったのでまた使い方をおさらいしていたところです。理屈で知っていても何のために使う
か実際に書いて理解していないとわかったつもり状態になってしまうのでここにきてサンドボックスで少し復習しました、はい。
次のプログラムは、コンストラクタのメソッドに決められた文字を設定して、superでスーパークラスのコンストラクタを利用して
それぞれ異なる結果を出力するプログラムです。
</pre> // スーパークラス class ClassSuper { protected int i; public ClassSuper(str i){ this.i = i; } public void favarite(){ System.out.println("私は" + i + "が好きではありません。"); } } // サブクラス class ClassSub extends ClassSuper{ public ClassSub(str i) { super(i); } @Override public void favarite(){ System.out.println("私は" + i + "が好きです。"); super.favarite(); } } public class Main { public static void main(String[] args) { ClassSub cs = new ClassSub("カレーライス"); cs.favarite(); } } <pre>
コンストラクタにカレーライスという文字を設定しています。何も設定しない場合は、スーパークラスをオーバーライドしている
サブクラスのメソッドを呼び出すのですが、今回はコンストラクタメソッド内でsuperメソッドを呼び出しています。このsuperメソッド
は、オーバーライドしているサブクラスのメソッドでないスーパークラスのメソッドを使いたい時に用いるメソッドです。
これを呼び出すことにより、”カレーライス”文字列はスーパークラス・サブクラス二つのクラスのコンストラクタとして初期値に設定され
それぞれ違うメソッドを呼び出すことに成功しています。