我有 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;
}
}
class Student extends Person
{
private String SID; // student ID number
/**
* Create a student with no parameters.
*/
Student()
{
//task.
}
}
public class Staff extends Person
{
private String roomNumber;
/**
* Construct a staff member with field values and no pamaeters.
*/
public Staff()
{
//task
}
}
我不知道我可以输入什么来创建一个没有参数的对象。它总是出现这样的错误:类 Person 中的构造函数 Person 不能应用于给定类型;必需:java.lang.String,int;
我在网上查了下有2种方法可以解决这个问题:
- 在超类中添加默认值:
Person()//without parameter
。
在学生子类中:
Student()
{
Person astudent = new Student() //I guess.
}
- 在子类中添加一个 super() :
Student()
{
super("xxx")//I guess.
}
我不知道该怎么办。我是学习 BlueJ 的初学者。希望有人能帮助我。非常感谢。
原文由 user3679454 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于您的超类
Person
没有默认构造函数,因此在您的子类中(Student
和Staff
),2d 必须将构造函数作为第一个构造函数调用 —你应该像这样定义你的子类构造函数: