类中的java构造函数不能应用于给定的类型

use*_*454 6 java inheritance

我有2个子类:Staff,Student他们属于超类Person.

这是我老师给出的代码(任务):


public class Person
{

   private String name;
   private int yearOfBirth;

   /**
    * Create a person with given name and age.
    */
   Person(String name, int yearOfBirth)
   {
      this.name = name;
      this.yearOfBirth = yearOfBirth;
   }
}
Run Code Online (Sandbox Code Playgroud)
class Student extends Person
{

   private String SID;    // student ID number

   /**
    * Create a student with no parameters.
    */

   Student()
   {
    //task.
   }
}
Run Code Online (Sandbox Code Playgroud)
public class Staff extends Person
{

   private String roomNumber;

   /**
    * Construct a staff member with field values and no pamaeters.
    */
   public Staff()
   {
    //task 
   }
}
Run Code Online (Sandbox Code Playgroud)

我不知道我可以键入什么来创建没有参数的对象.它总是出现如下错误:构造函数类Person中的Person不能应用于给定的类型; required:java.lang.String,int;

我在网上查了解有两种解决问题的方法:

  1. 在超类中添加一个默认值:Person()//不带参数.在子类Student中:

    Person()//without parameter

  2. 在子类中添加一个super(): Person()//without parameter

我不知道该怎么办.我是学习BlueJ的先驱.希望有人能帮助我.非常感谢你.

Abi*_*san 9

由于您的超类Person没有默认构造函数,因此在子类(StudentStaff)中,必须将超类构造函数作为第一个语句调用.

您应该像这样定义子类构造函数:

Student() {
    super("a_string_value", an_int_value);// You have to pass String and int values to super class
}
Run Code Online (Sandbox Code Playgroud)
Staff() {
    super("a_string_value", an_int_value); // You have to pass String and int values to super class
}
Run Code Online (Sandbox Code Playgroud)