0

私はこのクラス、人を持っています:

public class Person{
  String firstname;
  String lastname;

  public Person(String fname, String lname){

  }
  public String toString(){

  }
}

そして、このサブクラス Student:

public class Student extends Person{
  Student(){
    super();
  }
  int studentID;
  int level;

  public Student(String fName, String lName, int gLevel){

  }
  public int getLevel(){

  }
  public String toString(){

  }
}

DrJava でコンパイルすると、次のエラーが発生します。

cannot find symbol 
symbol  : constructor Person() 
location: class Person

何が問題なのかわかりません。super() コンストラクターを使用するとこの問題が解決されるはずであり、コードでは必要でさえないことを私は理解しています。私のコードは、Java での継承を示すオンラインで見た例と一致しますが、このエラーが引き続き発生します。

4

2 に答える 2

5

呼び出しは、クラスにsuper();デフォルトのコンストラクターがあると想定していますが、デフォルト以外のコンストラクターがあるため、そうではありません。Person

デフォルトのコンストラクターを明示的に指定する必要があります

public Person() { }

またはsuper、ステートメントで 2 つのパラメーターを渡します。

super("Firstname", "Lastname");
于 2015-02-24T14:49:21.860 に答える
0

これは、Person クラスにある、no zero argument constructorまたは存在するために発生します。default constructor

super()すべての子コンストラクターは暗黙的に1行で親クラスコンストラクターを呼び出すため、同じように学生クラスのコンストラクターが呼び出され、親クラスでデフォルトのコンストラクターを見つけることができませんでした。

親クラスに既に存在Java Compilerするため、デフォルトコンストラクターを自動的/暗黙的に提供しないのはなぜですかparameterised Constuctor

于 2015-02-24T14:49:29.263 に答える