为什么在使用静态时实例化主类?

时间:2015-11-21 03:35:49

标签: java

我的朋友是编程新手。他说他的代码有问题,并在Skype上分享他的屏幕。我看到他已经实例化了他的Main类以使用所有的功能,等等。它看起来像这样:

public static void main(String[] args) {
    Main main = new Main();
    main.Example();
}

我在网上的一些教程中也注意到了这一点。问题是,既然你不应该有多个主要内容,为什么要实例化呢?

4 个答案:

答案 0 :(得分:3)

你可以说这样更好。

你可能不应该有一个Main类,而是一个具有适当面向对象的类,它封装了一些东西。

不幸的是,在您的某个类中必须使用main方法。 但这并不意味着不允许实例化必须容纳main方法的穷人类。

在纯OOP中,根本没有static的位置。甚至不是实用程序类:http://www.yegor256.com/2014/05/05/oop-alternative-to-utility-classes.html

答案 1 :(得分:1)

此代码初始化Main类。不是public static void main()方法!!!

根据我的知识,这在Java中很常见,因为您不能总是使用static类或方法。

您无法访问non-static方法中的static个变量或方法(例如main方法)。因此,要做的是创建类本身的实例并使用non-static变量或方法。

参考this question

答案 2 :(得分:1)

可以找到使用静态和非静态上下文之间的区别here

假设您问他为什么要创建主类的对象,答案就是从静态上下文中访问非静态方法。没有那个主类对象,他只能访问静态方法和类。我建议查看面向对象的编程基础知识,可以找到here

 Main main = new Main(); //creates object of class Main
 main.Example(); //calls method Example from object main

你朋友所做的是创建一个类的实例并将其存储到内存中。他没有实例化main方法,而是Main类。这使他能够改变属于Main类主要对象的信息。

这样做的目的是访问Main类中的非静态方法。

答案 3 :(得分:1)

可以使用以下格式轻松访问静态方法。 ClassName.methodname()。 但是没有创建就无法调用类的实例方法。如果我们将所有方法都设置为static,那么就不需要像在实用程序类中那样创建对象。