构造函数在Java类中是未定义的

时间:2016-07-23 09:21:45

标签: java class undefined

我想打印出Person对象的名字和姓氏。

这是我的PersonTest类,它运行该文件并从Person类获取信息:

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

}

现在它说"构造函数Person(String,String)未定义"。

所以我的问题是,我应该在Person.class中编写什么来使其工作? 到目前为止我已经尝试过了:

package pckg;

public class Person {

    public String Firstname, Lastname;


    public String getFirstname() {
        return Firstname;
    }

    public String getLastname() {
        return Lastname;
    }

}

4 个答案:

答案 0 :(得分:0)

如错误所述,您尚未定义带有签名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;
    }

}

答案 1 :(得分:0)

你必须自己编写一个构造函数。如果你写new Person("James", "Bond");,编译器不知道你的意思。什么是字符串"James"? (它是FirstnameLastname还是完全不同的东西?)

只需将此代码添加到您的班级:

public Person(String fname, String lname) {
    Firstname = fname;
    Lastname = lname;
}

每次调用new Person时都会调用此函数。您只需将两个字符串存储在正确的类变量中即可。

答案 2 :(得分:0)

与错误一样,您没有为Person类实现构造函数

您编辑的代码应为

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

}

答案 3 :(得分:0)

您正在尝试调用此处不存在的构造函数:

Person firstperson = new Person("James", "Bond");

Person课程中没有包含两个String参数的构造函数:

Person(String firstName, String secondName) {
    this.firstName = firstName;
    this.secondName = secondName;
}

将该构造函数添加到Person类,或使用隐式零参数构造函数并分别设置这些值:

Person person = new Person();
person.firstName = "James";
person.secondName = "Bond";