public class Curiosity {
public void toString()//error because of this specific method name
{
System.out.println("method is successfully implemented");
}
}
如何使用同名方法" toString()"如果我想?
我是否必须将其返回类型作为字符串,如果不是 我该怎么做才能更改其返回类型,如果我想为toString使用void返回类型,java允许吗?
答案 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在任何继承关系中都被禁止。调用方法时,编译器只关心名称和参数。那么它如何区分同名方法但具有不同的返回类型呢?