为什么我们不需要为静态方法创建对象?

时间:2013-04-26 05:12:03

标签: java

我知道为什么main方法是静态的。如果它是静态的,则无需通过JVM实例化该类。没有对象,我们可以称之为。但为什么不需要对象来调用静态方法?

有人可以解释一下吗?

7 个答案:

答案 0 :(得分:6)

静态方法与类相关联,而不与类的任何实例相关联。

请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

答案 1 :(得分:6)

考虑这个例子,有一个家庭包含一个母亲和三个孩子。母亲给每个孩子带来三个冰淇淋甜筒,但是这三个孩子只带了一个PSP。所有儿童都使用相同的PSP,但他们有自己的冰淇淋。

这里的冰淇淋是一种非静态的东西(方法/变量),PSP是静态的东西,妈妈是班级,孩子是对象。

这很简单。静态属于一个类,它通常用于类的所有对象。非静态事物是特定于对象的。

答案 2 :(得分:0)

成员变量和方法需要对象,但静态是应用程序变量或函数,这就是静态不需要对象的原因之一。

答案 3 :(得分:0)

因为JVM可以为您调用该方法(但它认为合适)。否则,兔子洞会在哪里结束?他们可以通过使用interface方法创建已知的main来完成您的建议。例如:

interface ApplicationStarter
{
    void start(String []args);
}

然后有关于构造函数的问题。存在许多遇到类似问题的框架,例如SPI,出于类似的原因需要默认(无参数)构造函数。这些框架在其预先知道的要求(例如,非arg构造函数或者某些其他框架可能不是Serializeable)时失败,并且初学者发现这很难。使应用程序的最基本部分“复杂”并不是实现采用的好方法。

对于应用程序的开始/入口点,依赖于几乎所有其他语言类似的已知入口点(main)要容易得多:不用担心对象不构造或覆盖。

答案 4 :(得分:0)

main()方法是静态的,因为它们可以由运行时引擎调用,而不必实例化父类的实例。

Static方法在其声明中具有static修饰符,应该使用类名调用,而无需创建类的实例

答案 5 :(得分:0)

是的,你是正确的,你不需要一个实例对象来调用类的静态方法,因为静态方法属于一个类,而不属于该类的实例。此外,您不能在静态方法中使用实例变量,因为实例变量属于实例。

答案 6 :(得分:0)

当我们执行java文件时,java编译器会自动加载并执行静态成员。

我是java的新手,所以如果我的回答是错误的,请原谅我。