Javaの:どのように私は、エラーを解決することができます:「暗黙のスーパーコンストラクタが定義されていません」

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番目の質問: -人クラスにパラメータなしでどのように私はそれも人を()追加せずに動作するのですか?

あなたは、呼び出す必要があります1Person使用コンストラクタsuper(...)その中で構文を最初に Studentあなたがいるので、コンストラクタ必要があり、少なくとも提供firstNamename

3番目の質問:なぜ人()を追加しませんでした-仕事を?

引数なしのコンストラクタを追加しましたPersonコンパイラは暗黙のうちにその呼び出すことができるので、作業を行うPerson中コンストラクタ最初の Studentコンストラクタを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=318904&siteId=1