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" 是什么? (是 FirstnameLastname 还是完全不同的东西?)

只需将此代码添加到您的 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";