class B extends A {
public B() { super(); }
public B(int x) { super(x); }
public B(int x, int y) { super(x, y); }
public A(int x, int y, int z) { super(x, y, z); }
}
> class B extends A {
> public B() { super(); }
> public B(int x) { super(x); }
> public B(int x, int y) { super(x, y); }
> public A(int x, int y, int z) { super(x, y, z); }
> }
>
> これが自動的に生成されるならとても楽チンだと思います。
んーと.... (スコア:0)
通常こっちが何も指定しないと、 super() をコンパイラが勝手に
入れてくれるってことだった筈だけど、これって継承って言うんだっけ?
みたいなもんって言えばそれもそーか。
でも実際のとこ
Re:んーと.... (スコア:0)
コンパイラが super() を入れるので何も指定しなくてよいのですが。
以下のように親クラスで引数の違うコンストラクタがたくさん定義されていて、
class A {
public A() {}
public A(int x) {}
public A(int x, int y) {}
public A(int x, int y, int z) {}
}
これらを子クラスでも使えるようにしようとすると
以下のようにする必要があり、これがすごく面倒なのです。
class B extends A {
public B() { super(); }
public B(int x) { super(x); }
public B(int x, int y) { super(x, y); }
public A(int x, int y, int z) { super(x, y, z); }
}
これが自動的に生成されるならとても楽チンだと思います。
Re:んーと.... (スコア:1)
> public B() { super(); }
> public B(int x) { super(x); }
> public B(int x, int y) { super(x, y); }
> public A(int x, int y, int z) { super(x, y, z); }
> }
>
> これが自動的に生成されるならとても楽チンだと思います。
こんなことされたらまっとうなプログラマなら迷惑と思う…。
普通は super() はどこか一箇所(普通は最もパラメタの多いやつ)で呼ぶような気が。
# 趣味の問題だろうか…。this()を使うほうがコード重複が減ると思うんだけど。
Re:んーと.... (スコア:0)
今ひとつ言いたいことが伝わらなかったようなので
もう少し詳しく書きます。これでもあまりいい例ではないですが。
たとえば、java.util.Hashtable を継承して、
キーが存在しなかった場合に指定したデフォルト値を返す get メソッド
Object get(Object key, Object defaultValue) を追加したいとします。
Hashtable には(JDK1.2以降なら)4つのコンストラクタがあり