-1

我是一名 java 新手,目前正在阅读带有问题和答案的培训材料。下面的代码得到编译错误说

The method Hello() is undefined for the type Hello

我不明白为什么我会收到这个错误,因为代码对我来说很有意义。请提供一些解释。谢谢!

public class Hello {
    String title;
    int value;

    public Hello() {
        title += "World";
    }

    public Hello(int value) {
        this.value = value;
        title = "Hello";
        Hello();
    }
}
4

3 回答 3

2

就像错误所说的那样,您还没有实现名为Hello. 您已经为 Hello 类实现了一个构造函数,但没有实现一个方法Hello()。如果你想调用另一个构造函数,它必须是this(...)or super(...),并且是构造函数的第一行。

声明一个方法似乎在语言上是被接受的Hello(),你可以通过添加一个返回类型来做到这一点,如下所示:

public type Hello() {
    ...
}

但我强烈反对它。

于 2013-07-11T20:03:30.933 回答
2

您不能在其他重载构造函数的后续调用中调用构造函数。对同一类或超类的构造函数的调用必须是构造函数中的第一条语句。你必须通过 this() 或 super() 调用它

public Hello(int value){
    this();
    this.value=value;
    title = "Hello";
}
于 2013-07-11T20:00:45.950 回答
1

因为您的类中有 2 个构造函数并且没有方法。如果您需要方法,请将它们命名为与类名不同的名称并使用camelCase. 另外,不要忘记编写返回类型。如果您不想返回任何东西,请使用void. 例如,这编译:

public class Hello {   

    String title;
    int value;

    public void append() {
        title += "World";
    }

    public void setValue(int value) {
        this.value = value;
        title = "Hello";
        append();
    }
}

如果你想有构造函数,而不是方法,你必须调用其他构造函数,this()并且它必须在第一行:

public class Hello {   

    String title;
    int value;

    public Hello() {
        title += "World";
    }

    public Hello(int value) {
        this();
        this.value = value;
        title = "Hello";
    }
}
于 2013-07-11T20:04:04.007 回答