static
基本上意味着,对于该类的每个单个实例,此方法将是相同的,如果我们更改它,这将改变该类的每个单个实例,它也被称为类方法。好吧,如果我有一个以某种格式实现toString ()
方法的类,那么就说:
public String toString() {
return "(" + x + "," + y + ")";
}
为什么不能将其设置为静态?由于这种格式对于该类的每个实例都是相同的......?
答案 0 :(得分:8)
这不仅适用于toString()
如果静态方法hides是一个实例,那么这是一个编译时错误 方法
由于实例方法toString()
是从Object
隐式继承的,因此在子类型中将方法toString()
声明为static
会导致编译时错误。
从面向对象的角度来看,请参阅此问题的其他答案或related个问题。
答案 1 :(得分:5)
因为静态方法无法访问实例字段。此外,toString()
由java.lang.Object
指定,因此您必须拥有一个Object实例才能调用toString()
。最后,如果toString()
是静态的,那么它必须接受Object的实例(你怎么能在类的n实例上调用toString()?)。