user13047397:
私は、次のような問題がありますimplicit super constructor is undefined must invoke another constructor java
。方法-私は2つのクラス継承とスーパーを呼び出すものを持っています。
人クラス:
public class Person {
private String firstName;
private String name;
private Date birthday;
private Gender gender = Gender.Unknown;
Person(String fn, String n, Date d, Gender g){
firstName = fn;
name = n;
birthday = d;
gender = g;
}
Person(Person p){
firstName = p.firstName;
name = p.name;
birthday = new Date(p.birthday);
gender = p.gender;
}
Person(String fn, String n){
firstName = fn;
name = n;
}
そして、第二クラス:
public class Student extends Person implements Noten {
private int nr;
private String st;
Student(int m, String s){
this.nr= m;
this.st= s;
}
Student(Person p) {
super(p);
// TODO Auto-generated constructor stub
}
なぜ、拡張時にメソッド-クラスの人に、StudentクラスはStundet(人物P)を実装する必要がありますか?
一つの解決策:人()を追加-へのメソッドをPerson-Class
:
Person(){
System.out,println("Hello World"};
まだ動作しません。
最初の質問:なぜスーパー(P)ん-メソッドは動作しませんか?
2番目の質問:どのように私はそれも追加せずに動作するようですPerson()
-にパラメータを指定せずにPerson-Class
?
3番目の質問は:なぜ追加しませんでしたPerson()
-仕事を?
アンドレアス:
最初の質問:なぜスーパー(P)ん-メソッドは動作しませんか?
それはそれで、罰金を作品第二 Student
のコンストラクタ。
2番目の質問: -人クラスにパラメータなしでどのように私はそれも人を()追加せずに動作するのですか?
あなたは、呼び出す必要があります1のPerson
使用コンストラクタsuper(...)
その中で構文を最初に Student
あなたがいるので、コンストラクタ必要があり、少なくとも提供firstName
とname
。
3番目の質問:なぜ人()を追加しませんでした-仕事を?
引数なしのコンストラクタを追加しましたPerson
コンパイラは暗黙のうちにその呼び出すことができるので、作業を行うPerson
中コンストラクタ最初の Student
コンストラクタを。