class Position {
private double x,y;
private int id;
public String toString(Position a){
String words ="(" + a.x + "," +a.y + ")";
return words;
所以我在这里找到了一个内存地址。我究竟做错了什么?我想获得使用setter设置的x和y的实际值。我也有吸气剂,我试过而不是把a.x放入getX(),但这仍然给了我另一个内存地址。我做错了什么?
答案 0 :(得分:5)
尝试:
public String toString(){
您拥有的代码是添加新方法,而不是覆盖toString
的现有无参数Object
方法。这意味着旧方法仍然是被调用的方法,它会给出你正在看到的输出。
答案 1 :(得分:3)
你实际上并没有覆盖toString
;相反,你通过定义一个具有相同名称但需要不同参数的方法来重载它。您没有将Position
传递给toString
;它应该引用当前实例。
答案 2 :(得分:2)
作为其他帖子的补充,为什么您认为无论如何都需要将Position
的引用传递给方法toString()
。毕竟,该方法存在于同一个类Position
中。你可以直接使用变量/ properties而不需要像这样的任何引用。
public String toString(){
return "(" + x + "," + y + ")";
}
或者,如果您想特别提供参考,那么您可以这样做,
public String toString(){
return "(" + this.x + "," + this.y + ")";
}
我在重构后将方法设为一个衬垫。
如果您有兴趣知道哪些版本的人更喜欢,请参阅here, when to use this
。这是关于how overriding works in Java的教程/解释。
答案 3 :(得分:0)
因为它是一个家庭作业,我会请你逐步调试一下。即使您希望它也这样做,也不会调用您的方法。 (toString()和toString(Someobject)是不同的。