Java 无参数调用构造函数
我正在尝试构建一个具有构造函数、变异器和访问器的类。通过阅读书籍和在线文章,我了解到可以使用或不使用参数调用构造函数。然而,我下面的案例似乎不起作用。我甚至不能编译没有错误。当我使用student jane=new student(“”)时,它会起作用。我做错了什么Java 无参数调用构造函数,java,Java,我正在尝试构建一个具有构造函数、变异器和访问器的类。通过阅读书籍和在线文章,我了解到可以使用或不使用参数调用构造函数。然而,我下面的案例似乎不起作用。我甚至不能编译没有错误。当我使用student jane=new student(“”)时,它会起作用。我做错了什么 Devolution.java:6: cannot find symbol symbol : constructor student() location: class Governor student jane
Devolution.java:6: cannot find symbol
symbol : constructor student()
location: class Governor
student jane = new student();
^
其他代码如下
public class student {
//Private fields
private String name;
private String nationalID;
private String county;
private String gender;
//Constructor method
public student(String name, String nationalID, String county, String gender)
{
this.name = name;
this.nationalID = nationalID;
this.county = county;
this.gender = gender;
}
//Accessor for name
public String name()
{
return name;
}
//Accessor for nationalID
public String nationalID()
{
return nationalID;
}
//Accessor for county
public String county()
{
return county;
}
//Accessor for gender
public String gender()
{
return gender;
}
}
您需要创建另一个构造函数,如下所示:
public Student(){
//do things here
}
说明:
当类中没有定义构造函数时,就有一个默认构造函数(没有
任何参数)已存在。在这种情况下,您不需要定义它。但是,如果您有任何带有某些参数的构造函数,那么您也需要定义不带参数的构造函数。您需要创建另一个构造函数,如下所示:
public Student(){
//do things here
}
说明:
当类中没有定义构造函数时,就有一个默认构造函数(没有
任何参数)已存在。在这种情况下,您不需要定义它。但是,如果您有任何具有某些参数的构造函数,那么您也需要定义不带参数的构造函数。您只编写了一个构造函数,即具有四个参数的构造函数。您没有没有没有参数的构造函数,因此无法编写
newstudent()
请注意,如果您根本不编写任何构造函数,编译器将自动为您生成一个无参数的构造函数,但只要您编写一个构造函数,就不会发生这种情况
顺便说一句,大多数人使用大写字母作为班级名称(所以
Student
,而不是Student
)。这样就可以很容易地将它们与其他标识符的名称区分开来。养成这样做的习惯对你有好处。你只写了一个构造函数——一个有四个参数的构造函数。您没有没有没有参数的构造函数,因此无法编写newstudent()
请注意,如果您根本不编写任何构造函数,编译器将自动为您生成一个无参数的构造函数,但只要您编写一个构造函数,就不会发生这种情况
顺便说一句,大多数人使用大写字母作为班级名称(所以
Student
,而不是Student
)。这样就可以很容易地将它们与其他标识符的名称区分开来。养成这样做的习惯对你有好处。在学生
课程中没有没有没有参数的构造函数。只有在您没有定义任何其他构造函数(您已经定义了其他构造函数)的情况下,编译器才会生成这样的构造函数
只需添加构造函数:
public student()
{
this.name = null;
this.nationalID = null;
this.county = null;
this.gender = null;
}
在
student
类中没有没有没有参数的构造函数。只有在您没有定义任何其他构造函数(您已经定义了其他构造函数)的情况下,编译器才会生成这样的构造函数
只需添加构造函数:
public student()
{
this.name = null;
this.nationalID = null;
this.county = null;
this.gender = null;
}
它被称为重载构造函数。在类中,再次声明一个不带参数要求的构造函数。请参阅此以了解更多信息,它被称为重载构造函数。在类中,再次声明一个不带参数要求的构造函数。有关更多信息,请参见此构造函数是创建类实例的一种方法:
Student s = new Student(...);
将创建学生
类的新实例,并使您能够使用s
访问它
通常,在创建类的实例时,需要指定用于构建实例的某些信息。对于学生来说,可能是姓名、年龄等。您将有一个如下所示的构造函数:
public Student(String name, int age) {
//...
}
public Student() {
}
但在某些上下文中,您可以构建类的实例,而无需(至少在最初)指定任何内容。例如,您可能有这样一个构造函数
public Student() {
//...
}
这会使name和age字段留空或置零,直到稍后使用该类的另一个方法设置它们
关键的一点是,您已经创建了一个需要各种参数的构造函数,但是您没有指定像第二个示例这样不需要任何参数的构造函数。就目前情况而言,你可以写作
Student s = new Student("Bob", "ABC12345", "Surrey", "Male");
因为您有一个构造函数,它接受四个String
s作为参数。但你不会写字
Student s = new Student();
因为您没有创建不带参数的构造函数
这其中的一个小问题是,如果您不在类中指定任何构造函数,那么Java将自动为您创建一个不带参数且不做任何特殊操作的构造函数。因此,如果您不编写任何构造函数,您将免费获得一个如下所示的构造函数:
public Student(String name, int age) {
//...
}
public Student() {
}
但只有当你自己不写的时候。因为您已经指定了一个接受参数的函数,所以Java不会免费为您提供无参数函数。如果您希望能够创建没有任何参数的实例,则必须将其放在自己身上。构造函数是创建类实例的一种方法:
Student s = new Student(...);
将创建学生
类的新实例,并使您能够使用s
访问它
通常,在创建类的实例时,需要指定用于构建实例的某些信息。对于学生来说,可能是姓名、年龄等。您将有一个如下所示的构造函数:
public Student(String name, int age) {
//...
}
public Student() {
}
但在某些上下文中,您可以构建类的实例,而无需(至少在最初)指定任何内容。例如,您可能有这样一个构造函数
public Student() {
//...
}
这会使name和age字段留空或置零,直到稍后使用该类的另一个方法设置它们
关键的一点是,您已经创建了一个需要各种参数的构造函数,但是您没有指定像第二个示例这样不需要任何参数的构造函数。就目前情况而言,你可以写作
Student s = new Student("Bob", "ABC12345", "Surrey", "Male");
因为您有一个构造函数,它接受四个String
s作为参数。但你不能