Java class 中未定义构造函数
Constructor is undefined in Java class
我想打印出 Person
个对象的名字和姓氏。
这是我的 PersonTest class,它运行文件并从 Person class:
获取信息
package pckg;
public class PersonTest extends Person {
public static void main(String[] args) {
Person firstperson = new Person("James", "Bond");
String firstname = firstperson.getFirstname();
String lastname = firstperson.getLastname();
System.out.println("Person's first name is " + firstname);
System.out.println("My name is " + firstperson.getLastname() + ",");
System.out.println(firstperson);
System.out.println("Person is " + firstperson);
}
}
现在显示 "The constructor Person(String, String) is undefined"。
所以我的问题是,我应该在 Person.class 中写些什么才能使这项工作正常进行?
到目前为止我已经试过了:
package pckg;
public class Person {
public String Firstname, Lastname;
public String getFirstname() {
return Firstname;
}
public String getLastname() {
return Lastname;
}
}
如错误所述,您尚未定义具有签名 Person(String, String)
.
的构造函数
这样做,错误就会消失:
public class Person {
public String Firstname, Lastname;
public Person(String firstName, String lastName) {
this.Firstname = firstName;
this.Lastname = lastName;
}
public String getFirstname() {
return Firstname;
}
public String getLastname() {
return Lastname;
}
}
你必须自己写一个构造函数。如果你写 new Person("James", "Bond");
编译器不知道你的意思。字符串 "James"
是什么? (是 Firstname
、Lastname
还是完全不同的东西?)
只需将此代码添加到您的 class:
public Person(String fname, String lname) {
Firstname = fname;
Lastname = lname;
}
每次调用 new Person
时都会调用此函数。您只需获取这两个字符串并将它们存储在正确的 class 变量中。
如错误所述,您没有为 class 人
实现构造函数
您编辑的代码应该是
public class Person {
public String Firstname, Lastname;
public Person(String Firstname, String Lastname){
this.Firstname = Firstname;
this.Lastname = Lastname;
}
public String getFirstname() {
return Firstname;
}
public String getLastname() {
return Lastname;
}
}
您正试图调用此处不存在的构造函数:
Person firstperson = new Person("James", "Bond");
您的 Person
class 中没有包含两个 String
参数的构造函数:
Person(String firstName, String secondName) {
this.firstName = firstName;
this.secondName = secondName;
}
要么将该构造函数添加到您的 Person
class,要么使用隐式零参数构造函数并分别设置这些值:
Person person = new Person();
person.firstName = "James";
person.secondName = "Bond";
我想打印出 Person
个对象的名字和姓氏。
这是我的 PersonTest class,它运行文件并从 Person class:
获取信息package pckg;
public class PersonTest extends Person {
public static void main(String[] args) {
Person firstperson = new Person("James", "Bond");
String firstname = firstperson.getFirstname();
String lastname = firstperson.getLastname();
System.out.println("Person's first name is " + firstname);
System.out.println("My name is " + firstperson.getLastname() + ",");
System.out.println(firstperson);
System.out.println("Person is " + firstperson);
}
}
现在显示 "The constructor Person(String, String) is undefined"。
所以我的问题是,我应该在 Person.class 中写些什么才能使这项工作正常进行? 到目前为止我已经试过了:
package pckg;
public class Person {
public String Firstname, Lastname;
public String getFirstname() {
return Firstname;
}
public String getLastname() {
return Lastname;
}
}
如错误所述,您尚未定义具有签名 Person(String, String)
.
这样做,错误就会消失:
public class Person {
public String Firstname, Lastname;
public Person(String firstName, String lastName) {
this.Firstname = firstName;
this.Lastname = lastName;
}
public String getFirstname() {
return Firstname;
}
public String getLastname() {
return Lastname;
}
}
你必须自己写一个构造函数。如果你写 new Person("James", "Bond");
编译器不知道你的意思。字符串 "James"
是什么? (是 Firstname
、Lastname
还是完全不同的东西?)
只需将此代码添加到您的 class:
public Person(String fname, String lname) {
Firstname = fname;
Lastname = lname;
}
每次调用 new Person
时都会调用此函数。您只需获取这两个字符串并将它们存储在正确的 class 变量中。
如错误所述,您没有为 class 人
实现构造函数您编辑的代码应该是
public class Person {
public String Firstname, Lastname;
public Person(String Firstname, String Lastname){
this.Firstname = Firstname;
this.Lastname = Lastname;
}
public String getFirstname() {
return Firstname;
}
public String getLastname() {
return Lastname;
}
}
您正试图调用此处不存在的构造函数:
Person firstperson = new Person("James", "Bond");
您的 Person
class 中没有包含两个 String
参数的构造函数:
Person(String firstName, String secondName) {
this.firstName = firstName;
this.secondName = secondName;
}
要么将该构造函数添加到您的 Person
class,要么使用隐式零参数构造函数并分别设置这些值:
Person person = new Person();
person.firstName = "James";
person.secondName = "Bond";