0

この場合、コンパイルが失敗するのはなぜですか?

これは何が起こったのですか?Employee:呼び出しのコンストラクタ、default constructor of Personそれだけです。

ここに画像の説明を入力

4

3 に答える 3

7

スーパークラス コンストラクターには引数なしのデフォルト コンストラクターが定義されていないため、サブクラス コンストラクターからスーパークラスの 1-args コンストラクターを明示的に呼び出す必要があります。したがって、答えは18行目のDコンパイルエラーです

コードを修正するには:

public Employee(String id){
super("pass person name");
//rest of the code
}
于 2013-02-05T14:50:11.357 に答える
0

Person にはデフォルトのコンストラクターがあると想定していると思います。宣言されたコンストラクターがない場合、コンパイラーはデフォルトのコンストラクターのみを挿入します。Person に引数なしのコンストラクターを持たせたい場合は、それを宣言する必要があります。

于 2013-02-05T14:54:07.087 に答える
0

Employee を作成するときは、Person でコンストラクタを呼び出す必要があります。既定では、コンパイラは既定のコンストラクターを (引数なしで) 呼び出しますが、この場合、Person には存在しません (コンパイラーは、他のコンストラクターが存在しない場合にのみ既定のコンストラクターを作成します)。

Employee コンストラクターの最初の行で Person の具体的なコンストラクターを呼び出すか、Person で既定のコンストラクターを定義する必要があります。

于 2013-02-05T15:07:59.277 に答える