我在类Person中覆盖了方法toString(),但是我无法在我的main方法中使用它 - “无法从类型Object中对非静态方法toString()进行静态引用”
class Person {
private String name;
private int id;
public Person(String name,int id) {
this.name = name;
this.id = id;
}
@Override
public String toString() {
String result = "Name: "+this.name+" ID: "+this.id;
return result;
}
}
public class Testing {
public static void main(String[] args) {
Person person = new Person("Ivan",1212);
System.out.println(toString()); // Cannot make a static reference to non-static method
}
}
我该如何解决这个问题?
答案 0 :(得分:2)
使用:
System.out.println(person.toString());
toString
方法是一种非静态方法,这意味着它与特定实例相关。
如果要调用它,则需要在特定的Person
实例上调用它。
答案 1 :(得分:0)
您尝试从静态上下文(在本例中为main方法)调用非静态方法。要调用Person
对象的toString
方法,您需要执行person.toString()
。
有时将我们的代码视为英语有助于我们理解它。此语句的英语是“将人员转换为字符串”。我们把它变成代码。
人物映射到我们创建的person
对象。 “to a string”映射到toString()
方法。对象和动词(方法)在Java中用句点分隔。上述英语的完整代码为person.toString()
。
答案 2 :(得分:0)
你不能这样调用这个方法,你应该使用引用“person”!
System.out.println(person.toString());
答案 3 :(得分:0)
toString(....)
是Person
类的成员方法。这意味着您可以通过类的对象实例调用它。因此,您需要在person.toString()
toString()
而不是System.out.println(....);