Java无法找到父类

时间:2015-02-24 14:46:38

标签: java inheritance drjava

我有这个班,人:

public class Person{
  String firstname;
  String lastname;

  public Person(String fname, String lname){

  }
  public String toString(){

  }
}

这个子类,学生:

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中演示继承的任何示例,但我仍然会遇到此错误。

2 个答案:

答案 0 :(得分:5)

调用super();假设Person类中有一个默认构造函数,而没有这样,因为你有一个非默认构造函数。

您必须 明确提供默认构造函数:

public Person() { }

super语句中传递两个参数:

super("Firstname", "Lastname");

答案 1 :(得分:0)

这是因为您的人员类中存在no zero argument constructordefault constructor

由于每个子构造函数都隐式调用了父类类构造函数的1行super(),所以同样地调用了Student Class的构造函数,并且它无法在父类中找到默认的构造函数。

为什么Java Compiler不会自动/隐式地提供默认构造函数因为父类中已存在parameterised Constuctor