我有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;
我在网上查了解有两种解决问题的方法:
在超类中添加一个默认值:Person()//不带参数.在子类Student中:
Person()//without parameter
在子类中添加一个super():
Person()//without parameter
我不知道该怎么办.我是学习BlueJ的先驱.希望有人能帮助我.非常感谢你.
由于您的超类Person没有默认构造函数,因此在子类(Student和Staff)中,必须将超类构造函数作为第一个语句调用.
您应该像这样定义子类构造函数:
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)