在Java中覆盖toString方法

时间:2014-12-18 06:47:46

标签: java compiler-errors tostring object-to-string

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 个答案:

答案 0 :(得分:4)

toString()方法必须返回String。这是覆盖Object的{​​{1}}。

的唯一方法
toString()

如果您希望使用相同的名称但不覆盖 public String toString() { return "method is successfully implemented"; } 的{​​{1}},则可以通过添加参数来重载名称Object,从而更改你的方法的签名。

示例:

toString

答案 1 :(得分:3)

您正试图以错误的方式重载toString()方法

重载方法由传递给方法的参数的数量和类型区分。在代码示例中,draw(String s)和draw(int i)是不同且唯一的方法,因为它们需要不同的参数类型。

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

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

答案 2 :(得分:1)

在您的课程中使用toString()的唯一方法是将返回类型保持为String

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

这就是它在Object类中的定义方式,如果你想覆盖它,你将不得不使用确切的签名

或者如果您仍希望将方法名称用作toString,则可以更改方法的签名。

方法的签名包括方法的名称和参数。 请记住,返回类型不是方法签名的一部分

答案 3 :(得分:1)

您可以查看 java.lang.Object 的源代码。

toString 方法具有String类型的返回值。您不能使用其他方法,其名称为 toString ,但返回类型不是字符串。

实际上,Java在任何继承关系中都被禁止。调用方法时,编译器只关心名称和参数。那么它如何区分同名方法但具有不同的返回类型呢?