1
public class Curiosity {



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



}

如果我愿意,如何使用同名的方法“toString()”?

我是否必须将其返回类型作为 String 如果不是我应该怎么做来更改它的返回类型,例如假设如果我想为 toString 使用 void 返回类型,java 是否允许这样做?

4

4 回答 4

4

toString()方法必须返回一个String. Object这是覆盖's的唯一方法toString()

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

如果您希望使用相同的名称但不覆盖 Object's toString,您可以toString通过添加参数重载名称,从而更改方法的签名。

例子 :

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) 是不同且独特的方法,因为它们需要不同的参数类型。

您不能声明多个具有相同名称和相同数量和类型的参数的方法,因为编译器无法区分它们。

编译器在区分方法时不考虑返回类型,因此即使它们具有不同的返回类型,也不能声明具有相同签名的两个方法。

于 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 回答