-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

他のオーバーロードされたコンストラクターの後の呼び出しでコンストラクターを呼び出すことはできません。同じクラスまたはスーパークラスのコンストラクターへの呼び出しは、コンストラクターの最初のステートメントである必要があります。this() または super() で呼び出す必要があります

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

エラーが示すように、 という名前のメソッドを実装していませんHelloHello クラスのコンストラクタを実装しましたが、メソッドは実装していませんHello()。別のコンストラクターを呼び出したい場合は、this(...)またはsuper(...)コンストラクターの最初の行である必要があります。

method を宣言することは言語的に受け入れられているHello()ようです。これは、次のように戻り値の型を追加することによって行います。

public type Hello() {
    ...
}

しかし、私はそれを強く思いとどまらせます。

于 2013-07-11T20:03:30.933 に答える
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 に答える