ここから本文です

Aというクラスを拡張したBというクラスをさらに拡張したCというクラスがあり、...

mam********さん

2016/10/2623:11:40

Aというクラスを拡張したBというクラスをさらに拡張したCというクラスがあり、Cクラスのインスタンスを初期化する際に、Cクラスから「Aクラスのコンストラクタを呼びなさい。」という方法はありますか。

super()だと、呼ばれるのはBクラスのB()ですよね。
そうでなくてA()を呼ばせたいのです。

閲覧数:
63
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kon********さん

2016/10/2706:35:22

class A{
protected A(){
System.out.println("A");
}
}
class B extends A{
protected B(){
System.out.println("B");
}
}
class C extends B{
protected C(){
System.out.println("C");
}
public static void main(String[] args){
new C();
}
}

プログラム(C.class)の実行結果を補足して
みてください

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

2016/10/2723:23:14

superでBクラスのコンストラクタを呼び出します。
そして、Bクラスのコンストラクタ内にsuperでAクラスのコンストラクタを呼び出すようにしておけばOKです。

なお、Javaは継承したクラスは、初期化のときに自動的に親クラスの部分がすべて作られます。
要するに自動でsuperで親クラスのコンストラクタを呼び出すのです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる