构造函数未定义的问题

时间:2015-02-03 21:50:30

标签: java constructor

public class Person {

    public String Person(String name) {
        return name;
    }
    public static void main(String[] args) {
        Person one = new Person("hendry");
    }
}

我做错了什么?

4 个答案:

答案 0 :(得分:2)

这不是构造函数,因为您已声明了返回类型。这只是一个恰好与你的同名的方法。

public String Person(String name) {

如果没有显式构造函数,编译器会插入一个没有参数的隐式默认构造函数,因此与参数的数量存在冲突。

删除返回类型;不应在构造函数上指定返回类型,甚至不应指定void

public Person(String name)

不要从构造函数返回任何内容。但是,您可能希望将参数存储在实例变量中,并且您可能希望添加一个返回该实例变量的方法(“getter”)。

答案 1 :(得分:0)

构造函数没有返回类型。为什么?因为他们存在的目的是初始化属性。

也许您正在寻找的是一种吸气方法:

public String getPerson(String name) {
    return name;
}

但是如果你想要它作为构造函数,初始化一个属性,首先声明它,然后将构造函数的参数赋给它:

public class Person {
    private String name;

    public String Person(String pName) {
        this.name = pName;
    }
    ...
}

答案 2 :(得分:0)

public String Person(String)不是有效的构造函数,因为构造函数没有返回类型。实际上,根据编译器,您的代码中没有参数化构造函数,但您尝试调用一个

答案 3 :(得分:0)

构造函数不返回任何内容。他们可以参数,但他们不返回任何东西。 必须是这样的:

private String name;

public Person(String name) {
    this.name = name; }

public String getName(){
    return this.name; }

public static void main(String[] args) {
    Person one = new Person("hendry");
    String name = one.getName();
}