Java - 调用静态方法会在所有实例上调用该方法吗?

时间:2013-02-01 02:04:05

标签: java class static invoke

假设我有一个类A,它有自己的实例变量。它有一个名为doSomething()的方法,它是static方法。现在,A添加了另一个类B作为指针。在类B中说,我运行一些逻辑并确定我需要运行doSomething()中包含的代码。我可以只说A.doSomething()吗?如果我有一个名为A的{​​{1}}实例,是否会调用a的{​​{1}}方法?

4 个答案:

答案 0 :(得分:7)

如果您调用A.doSomething(),它将只执行该静态方法。说a的{​​{1}}没有意义,因为静态方法不属于你的类的对象或实例。

答案 1 :(得分:2)

静态方法不属于任何特定实例。所以当你调用A.doSomething()时,如果有0,1或100万个A实例并不重要。一个方法被调用。

答案 2 :(得分:2)

第一个问题的答案:"我可以只说A.doSomething()吗?"
是的。正如其他答案所指出的那样...... doSomething()static是一个类方法,因此需要为其调用创建A的对象。

第二个问题的答案:"如果我有一个名为A a的实例,a doSomething()方法被调用?"
事实上它会,但它类似于A.doSomething()。因此,以这种方式援引它毫无意义。如果有的话,以后当你阅读代码时会增加你的困惑。

答案 3 :(得分:0)

虽然我质疑你的一些术语(我感觉你知道你在谈论什么,你只是没说完美),回答你的问题,不,因为它不能。静态方法与类绑定。调用a.staticMethod()与A.staticMethod相同。两者都完全相同。