1
public class Curiosity {



public void toString()//error because of this specific method name 
{
    System.out.println("method is successfully implemented");
}



}

必要に応じて、同じ名前の「toString()」のメソッドを使用するにはどうすればよいですか?

toString に void 戻り値の型を使用したい場合、java はそれを許可しますか?

4

4 に答える 4

4

toString()メソッドは を返す必要がありStringます。それが をオーバーライドする唯一の方法ObjectですtoString()

public String toString()
{
    return "method is successfully implemented";
}

をオーバーライドせず に同じ名前を使用する場合は、引数を追加して名前をオーバーロードし、メソッドObjectのシグネチャを変更できます。toStringtoString

例 :

public void toString (String something)
{
    System.out.println("method is successfully implemented " + something);
}
于 2014-12-18T06:49:00.937 に答える
3

toString() メソッドを間違った方法でオーバーロードしようとしています

オーバーロードされたメソッドは、メソッドに渡される引数の数と型によって区別されます。コード サンプルでは、​​draw(String s) と draw(int i) は異なる引数の型を必要とするため、別個の一意のメソッドです。

コンパイラはそれらを区別できないため、同じ名前、同じ数と型の引数を持つ複数のメソッドを宣言することはできません。

コンパイラは、メソッドを区別するときに戻り値の型を考慮しないため、戻り値の型が異なっていても、同じシグネチャで 2 つのメソッドを宣言することはできません。

于 2014-12-18T06:50:06.167 に答える
1

java.lang.Objectのソースコードを見ることができます。

toStringメソッドの戻り値は String 型です。名前がtoStringであるが、戻り値の型がStringではない別のメソッドを持つことはできません。

実際、どの継承関係においても、Java では禁止されています。メソッドを呼び出すと、コンパイラは名前とパラメーターのみを考慮します。では、同じ名前で戻り値の型が異なるメソッドをどのように区別できるでしょうか。

于 2014-12-18T07:03:43.390 に答える
1

toString()クラスで使用する唯一の方法は、戻り値の型をそのままにしておくことですString

public String toString()
{
   //your code here
}

それがObjectクラスで定義されている方法であり、オーバーライドする場合は、正確な署名を使用する必要があります

または、メソッド名を toString として使用したい場合は、メソッドのシグネチャを変更することができます。

メソッドのシグネチャには、メソッドの名前とパラメーターが含まれます。戻り値の型はメソッドのシグネチャの一部ではないことに注意してください

于 2014-12-18T06:59:09.917 に答える