【发布时间】:2011-10-25 01:59:12
【问题描述】:
我知道 static 的定义,它是将变量或方法引用到类本身的关键字。这是否意味着如果我在名为calculator 的类中编写了一个名为parseInt() 的方法,在另一个名为mathProgram 的类中编写了另一个名为parseInt() 的方法,编译器Eclipse 将知道该方法parseInt() 指的是哪个类?
【问题讨论】:
我知道 static 的定义,它是将变量或方法引用到类本身的关键字。这是否意味着如果我在名为calculator 的类中编写了一个名为parseInt() 的方法,在另一个名为mathProgram 的类中编写了另一个名为parseInt() 的方法,编译器Eclipse 将知道该方法parseInt() 指的是哪个类?
【问题讨论】:
您需要通过引用它所属的类来调用静态方法:
MathProgram.parseInt();
和
不一样Calculator.parseInt();
这样写,JVM 很清楚你指的是哪个方法。
编辑:您也可以使用实例变量调用静态方法,但这是错误的形式,应该避免。有关更多信息,请参阅this SO 答案。
Edit2:这是Java Codding Conventions 部分的链接,该部分有关从实例变量调用静态方法的使用。 (感谢Ray Toal 提供question posted here 答案中留下的链接)
【讨论】:
是的,因为静态方法和变量必须在一个类中,并且要在该类之外调用它们,您需要对它们进行限定。
例如Calculator.parseInt() 和OtherClass.parseInt()。
Eclipse 使用它来区分它们。
【讨论】:
如果方法是静态的,则需要使用类名来调用它
Calculator.parseInt();
否则,有实例
Calculator c = new Calculator();
c.parseInt();
无论哪种方式,你想要的都是明确的
【讨论】:
c.parseInt())调用静态方法通常被认为是不好的做法。