gpt4 book ai didi

java - 调用不带参数的构造函数

转载 作者:行者123 更新时间:2023-12-01 06:30:37 25 4
gpt4 key购买 nike

我正在尝试构建一个带有构造函数、修改器和访问器的类。通过阅读书籍和在线内容,我了解到您可以使用或不使用参数来调用构造函数。但是,我下面的情况似乎不起作用。我什至无法无错误地编译。当我使用 student jane = new Student("") 时它会起作用。我做错了什么?

Devolution.java:6: cannot find symbol
symbol : constructor student()
location: class Governor
student jane = new student();
^
public class designers {

public static void main(String[] args) {

student jane = new student();
student smith = new student("jane", "36365355", "Nairobi", "Male");

System.out.println("Janes's Properties: "+jane.name() + " " + jane.nationalID() + " " + jane.county()+" "+jane.gender());
System.out.println("Smith's Properties: "+smith.name() + " " + smith.nationalID() + " " + smith.county()+" "+smith.gender());

}
}

其他代码如下

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;
}

}

最佳答案

构造函数是创建类实例的一种方法:

Student s = new Student(...);

将创建 Student 类的新实例,并允许您使用 s 访问它。

通常,当您创建类的实例时,您需要指定构建实例时使用的某些信息。对于学生来说,可能是姓名、年龄等等。您将有一个如下所示的构造函数:

public Student(String name, int age) {
//...
}

但在某些情况下,您可以构建类的实例,而无需(至少最初)指定任何内容。例如,您可能有一个像这样的构造函数

public Student() {
//...
}

这会将姓名和年龄字段留空或清零,直到您稍后使用该类的另一个方法来设置它们。

您正在做的事情的关键点是您已经创建了一个需要各种参数的构造函数,但您没有像第二个示例那样指定不需要任何参数的构造函数。就目前情况而言,你可以写

Student s = new Student("Bob", "ABC12345", "Surrey", "Male");

因为你有一个构造函数,它接受四个String作为参数。但你不能写

Student s = new Student();

因为您没有创建不带参数的构造函数。

其中的一个小问题是,如果您没有在类中指定任何构造函数,那么 Java 会自动为您创建一个不带参数且不包含任何参数的构造函数。不要做任何特别的事情。因此,如果您不编写任何构造函数,您将免费获得一个如下所示的构造函数:

public Student() {
}

但这如果您不编写自己的任何内容。既然您已经指定了一个确实接受参数的参数,Java 不会免费为您提供一个无参数的参数。如果您希望能够创建不带任何参数的实例,则必须将其放入自己中。

关于java - 调用不带参数的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com