我的朋友是编程新手。他说他的代码有问题,并在Skype上分享他的屏幕。我看到他已经实例化了他的Main类以使用所有的功能,等等。它看起来像这样:
public static void main(String[] args) {
Main main = new Main();
main.Example();
}
我在网上的一些教程中也注意到了这一点。问题是,既然你不应该有多个主要内容,为什么要实例化呢?
答案 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
变量或方法。
答案 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,那么就不需要像在实用程序类中那样创建对象。