【发布时间】:2013-06-07 04:32:01
【问题描述】:
每当我们使用静态时,我们不需要创建一个类的引用变量。我们可以通过<class_name>直接访问类
但是当我们编写如下代码时:
class Abc
{
static void show()
{
System.out.println("Hey I am static");
}
}
class Test
{
public static void main(String args[])
{
Abc.show(); //1
new Abc().show(); //2
}
}
第 1 行和第 2 行如何工作。
的意义是什么new Abc().show();
【问题讨论】:
-
请缩进您的代码。 ;)
-
静态方法与类相关联,而不是实例。调用该方法的“正确”方式是使用类名(即 Abc.show())调用它。显示这一点的最明显原因是,如果您正在浏览代码并看到实例调用方法,您将假定该方法将与实例相关联,而不是与类相关联。让实例调用静态方法可能会误导/混淆查看您的代码的人。
-
在实例上调用静态方法会导致警告,尽管它也只会调用类上的静态方法。它编译的第三个原因仅仅是因为无论如何都给出了类和实例,但这是一种糟糕且毫无意义的做法。
-
如果我的回答中肯,请考虑投赞成票。谢谢。
标签: java default operator-keyword static-members