为什么下面的代码段代码使用非静态代码来运行程序?它有以这种风格运行程序的优点???
public static void main(String[] args) {
Main go = new Main();
go.start();
}
public Main() {
}
public void start() {
//SOME CODE HERE
}
答案 0 :(得分:4)
基本上,使用main()
简单地实例化相应类的实例,然后调用该对象上的方法有两个好处:
它允许您以更面向对象的方式“重用”Main类。如果另一个类想要使用Main
,那么调用静态方法来实现这一点通常不是你想要的(例如,使单元测试更难以使用静态方法)。因此,如果“重用”是您的要求之一,那么可以实例化该类,并在不调用其静态main()
的情况下使用它可能是有益的。
除此之外,还也使得对主要课程进行单元测试变得容易一些。
答案 1 :(得分:2)
经典的面向对象方法鼓励封装:一切都必须尽可能本地化,并且必须有多个类的实例。全球是坏的和丑陋的。
面向对象的方法还鼓励继承,多态和覆盖具有良好定义功能的方法的可能性。或者,替代地,组合(从明确定义的子组件组成复杂对象的替代版本)。
虽然单个简单的静态方法看起来与单个简单的非静态方法没什么不同,但它只能轻松调用此类的其他静态方法,并且只能简单地访问静态变量。
这阻碍了先进的架构,这对于简单的" hello world"但值得考虑的是,如果你想从这个存根中发展出一个庞大而复杂的应用程序。