【发布时间】:2014-01-03 07:31:06
【问题描述】:
伙计们,我有一个简单但令人讨厌的问题。
据我了解,static 基本上意味着,对于该类的每个实例,此方法都是相同的,如果我们更改它,该方法将针对该类的每个实例而更改,它也称为类方法.好吧,如果我有一个类以某种格式实现toString () 方法,那么假设:
public String toString() {
return "(" + x + "," + y + ")";
}
为什么不能设置为静态?因为对于该类的每个实例,这种格式都是相同的......?
【问题讨论】:
-
想想 x 和 y。如果它们是非静态字段,则静态方法无法访问它们。
-
@PatriciaShanahan 所以你说如果 x 和 y 是静态值,toString() 方法可以设置为静态?
-
您对
static的理解略有偏差。static表示只创建一个实例(至少对于变量)。您甚至可以在不实例化对象的情况下访问static变量/方法(例如ClassName.toString()。此外,您不必为每个对象创建一个新方法;它们都有相同的可用方法 -
否,因为在 Object 类中,toString() 不是静态的。如果你愿意,你可以为它创建一个静态方法,但是像 System.out.println 这样的东西不会调用它。
-
我写了一个答案,直到我意识到这个问题没有意义。您已经定义了一次方法,您应该在哪里重新定义它?
标签: java class static access-modifiers