为什么我的toString()类会自动覆盖?

Syn*_*ror 1 java overriding

我正在使用Eclipse Build id:20120614-1722.

我有一个名为"TOY1"的对象类和一个函数toString().我以前知道,当我打电话给

System.out.println(TOY1); 
Run Code Online (Sandbox Code Playgroud)

它应该返回地址.但是,由于某种原因,它返回为我的对象声明的toString(),而没有指定@Override表示法.

保持这种方式是否安全?或者这是我在特定构建中实现的新功能.

谢谢

编辑

如上所述,这是我的代码的一部分:

public class TOY1 {

//irrelevant declarations

public String toString() {
String data;
data="Manufacturer=";
data+=manufact;
data+="DOP:";
data+=date_of_production;
return data;
}
}
Run Code Online (Sandbox Code Playgroud)

在声明TOY1实例TOY1然后使用打印输出时 System.out.printIn(TOY1_instance)

我得到的是实际数据,而不是一些垃圾地址.

我的问题是我在哪里覆盖它没有显示警告,没有扩展覆盖此类.

Tom*_*icz 7

System.out.println(obj);obj.toString()内部打电话.toString()如果你不覆盖默认实现,它会返回一些类似地址的值.

您可以省略@Override注释,但使用它更安全.当你认为自己是压倒性而不是因为签名上的细微差别时,它变得特别有用.例如:

@Override
public String tostring() //...
Run Code Online (Sandbox Code Playgroud)

不会编译.更常见的错误是错误的equals():

@Override
public boolean equals(TOY1 obj) //...
Run Code Online (Sandbox Code Playgroud)

你明白为什么吗?如果没有@Override它,很容易错过这样一个巨大的错误.

  • @Syntax_Error:显然你*做了*覆盖它.`@Override`注释是无关紧要的,它只是用于记录和一些静态分析.也许你扩展的一些课程会覆盖它? (2认同)