为什么toString()不能是静态方法?

Chr*_*ski 7 java static class access-modifiers

Sup人,我有一个简单但有问题的问题.据我所知,static基本上意味着,对于该类的每个单个实例,此方法将是相同的,如果我们更改它,这将为该类的每个单个实例更改,它也称为类方法.好吧,如果我有一个实现toString ()某种格式的方法的类,那么让我们说:

public String toString() {  
    return "(" + x + "," + y + ")";
}
Run Code Online (Sandbox Code Playgroud)

为什么不能将其设置为静态?由于这种格式对于该类的每个实例都是相同的......?

Sot*_*lis 8

这不仅适用于 toString()

Java语言规范

如果静态方法隐藏实例方法,则为编译时错误.

由于实例方法toString()是隐式继承的Object,toString()因此static在子类型中声明方法会导致编译时错误.

从面向对象的角度来看,请参阅此问题的其他答案或相关问题.


Ell*_*sch 5

因为静态方法无法访问实例字段.此外,toString()java.lang.Object,指定,因此您必须具有要调用的Object实例toString().最后,如果toString()是静态的,它将不得不接受Object的实例(你怎么能在类的实例上调用toString()?).