[英]Override toString method in Java
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是否允许这样做?
toString()
方法必须返回String
。 这是重写Object
的toString()
的唯一方法。
public String toString()
{
return "method is successfully implemented";
}
如果希望使用相同的名称但不覆盖 Object
的toString
,则可以通过添加参数来重载名称toString
,从而更改方法的签名。
范例:
public void toString (String something)
{
System.out.println("method is successfully implemented " + something);
}
您试图以错误的方式重载toString()方法
重载的方法通过传递给方法的参数的数量和类型来区分。 在代码示例中,draw(String s)和draw(int i)是不同且唯一的方法,因为它们需要不同的参数类型。
您不能声明多个具有相同名称,相同数量和类型的参数的方法,因为编译器无法区分它们。
区分方法时,编译器不会考虑返回类型,因此即使两个方法具有不同的返回类型,也无法声明具有相同签名的两个方法。
在类中使用toString()
的唯一方法是将返回类型保持为String
public String toString()
{
//your code here
}
这就是在Object
类中定义的方式,如果要覆盖它,则必须使用确切的签名
或者,如果您仍然希望将方法名称用作toString,则可以更改方法的签名。
方法的签名包括方法的名称和参数。 请记住,返回类型不是方法签名的一部分
您可以查看java.lang.Object的源代码。
toString方法具有String类型的返回值。 您不能有另一个名为toString的方法,但返回类型不是String。
实际上,在Java中任何继承关系都禁止使用它。 调用该方法时,编译器只关心名称和参数。 那么,如何区分相同名称但返回类型不同的方法呢?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.