
No.1ベストアンサー
- 回答日時:
親クラスで使われるコンストラクタが、
引数(パラメータ)のないコンストラクタの場合、
super();は、自動的に呼ばれるので、呼びだす必要はありません。
引数のあるコンストラクタの場合、
superを呼びだしてパラメータを渡してやる必要があります。
たとえば、class Aのコンストラクタが「名前・年齢」の引数を持っているとします。
/*コンストラクタ*/
public A(String name, int age){
...
}
サブクラスBで、「性別」も指定したい場合、
親クラスのコンストラクタを呼びだしてバラメータを渡してやる必要があります。
/*Bのコンストラクタ*/
public B(String name, int age, boolean sex){
super(name, age);
...
/*変数sexの処理はここでやる*/
...
}
No.2
- 回答日時:
サブクラスはスーパークラスを継承しているのですから、
スーパークラスの持っているものはすべて持っているわけで、
当然、スーパークラスがコンストラクタで行っている初期化処理は
サブクラスでもやらなければならない、ということです。
サブクラスは、スーパークラスの資産を使わせてもらっているだけに
スーパークラスの意向に従わなくてはいけないのです。
super()はスーパークラスのインスタンスを作っているわけではなくて、
スーパークラスのコンストラクタというメソッドを呼んでいるだけです。
No.1の方の回答にあるように、スーパークラスのコンストラクタが
引数なしであれば、super();と書かなくても暗黙のうちに呼ばれています。
コンストラクタに引数があると、どれを呼ぶのか明示的に書かないとわからないので
super(xxx);と書かなければなりません。
つまり、スーパークラスのコンストラクタを呼ばないときはあり得ないということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパークラスからサブクラス...
-
abstract と static を一緒に付...
-
Java初級 引数に適用できません
-
別クラスのmainメソッドの実行
-
java ジェネリックスに関して
-
非静的 public final フィール...
-
C# でメソッドに送られてきたOb...
-
Strutsでチェックボックスの値...
-
StringBufferからStringへキャ...
-
C言語での文字列より値を抜き出す
-
String.containsの反対機能はあ...
-
java.io.File クラスについて
-
「タイプ初期化子が例外をスロ...
-
UMLのクラス図はmain()も含むん...
-
変数名の付け方
-
エクセルVBAで、条件に一致する...
-
C# インスタンスの破棄
-
VB.NETでフォーム上にExcelのよ...
-
java eclipse 型に解決できません
-
private static という変数の修飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
StringBufferからStringへキャ...
-
abstract と static を一緒に付...
-
return new使用時
-
なぜprotected overrideなのか
-
C# 点の描き方をおしえてくだ...
-
C言語での文字列より値を抜き出す
-
スーパークラスからサブクラス...
-
説明文書でのメソッド・変数の...
-
別クラスのmainメソッドの実行
-
Strutsでチェックボックスの値...
-
CSVから読み込んだデータの保持...
-
Javaの関数名が長い?
-
シェルスクリプトからのJavaメ...
-
Java初心者です、エラーの意味...
-
java ジェネリックスに関して
-
C# でメソッドに送られてきたOb...
-
Java初心者です。例外のキャッ...
おすすめ情報