我在我的代码中遇到错误(这是我的任务的最后一行,我似乎无法解决它),这在addStudent方法中 . 它说我尝试访问重载的构造函数实际上是试图访问默认构造函数,并且没有变量供我通过 . 所以,简而言之:
“studentArray [i] =新学生(名字,姓氏,性别,sClass,sID);”
正在尝试访问:
“public void Student(){}”
但我希望它访问:
“public void Student(String firstname,String lastname,String gender,String sClass,String sID)”
谢谢您的帮助!
-AndresL
public void Student()
{
setFirstName("Unknown");
setLastName("Unknown");
setGender("Unknown");
setClass("Freshman");
setID("0000");
}
public void Student(String firstname, String lastname, String gender, String sClass, String sID)
{
setFirstName(firstname);
setLastName(lastname);
setGender(gender);
setClass(sClass);
setID(sID);
}
public static boolean addStudent(String firstname, String lastname, String gender, String sClass, String sID)
{
for (int i=0; i<studentArray.length; i++)
{
if (studentArray[i] == null)
{
studentArray[i] = new Student(firstname, lastname, gender, sClass, sID);
totStudent++;
}else {JOptionPane.showMessageDialog(null, "Max students reached.");}
}
return true;
}
5 回答
你用
void
声明你的"constructors",实际上是void
方法,而不是构造函数 . 因此,编译器只能使用默认构造函数,这就是您收到该错误的原因 . 所以:你应该在尝试定义构造函数的任何地方删除void
关键字 .从构造函数中删除
void
关键字:改成
同样
改成
构造函数没有返回类型 .
构造函数没有返回类型,因为当它们与new关键字一起使用时,它们返回与它们定义的类相同类型的新Object .
Object o = new Object(); //你正在调用Object构造函数 .
至
构造函数没有返回类型甚至无效 . 你声明你的构造函数是void,这将使它们成为方法而不是构造函数
从构造函数中删除
void
,无需调用setter
方法 . 您可以直接访问以下属性:同样
你应该全力以赴 .