一个类可以实例化吗?

时间:2013-08-14 20:08:03

标签: java oop

我在查看website上的示例代码。这是一个片段,

public class ManageEmployee {
   private static SessionFactory factory; 
   public static void main(String[] args) {
      try{
         factory = new Configuration().configure().buildSessionFactory();
      }catch (Throwable ex) { 
         System.err.println("Failed to create sessionFactory object." + ex);
         throw new ExceptionInInitializerError(ex); 
      }
      ManageEmployee ME = new ManageEmployee();

      /* Add few employee records in database */
      Integer empID1 = ME.addEmployee("Zara", "Ali", 1000);
      Integer empID2 = ME.addEmployee("Daisy", "Das", 5000);
      Integer empID3 = ME.addEmployee("John", "Paul", 10000);

为什么这堂课会自称?看起来它会一直在循环中调用自己。这节课在这里做什么,ManageEmployee ME = new ManageEmployee();?感谢。

4 个答案:

答案 0 :(得分:14)

main方法创建其定义的类的新实例并不罕见。但创建实例不会再次调用main 。请记住,main是一种静态方法,与任何特定实例无关。

答案 1 :(得分:3)

其他成员在这里提到的关键点是运行程序和实例化类是两回事。当您在java中编写Hello World时,您编写了以下内容:

public static void main(String[] args) {
    System.out.println("Hello World");
}

当您执行包含它的类时,main方法会运行。但是,在此主方法(在静态上下文中)中,您可以执行以下操作:

ArrayList<String> stringList = new ArrayList<String>();

这称为实例化,这里我们实例化ArrayList类型String。发生这种情况时,ArrayList内的主方法不会被调用 - 相反,它的构造函数是。因此,在我们的main方法中,我们可以实例化包含main方法的类,并调用构造函数,而不是main方法:

public class TestClass {
    public TestClass(String greeting) {
        System.out.println(greeting);
    }


    public static void main(String[] args) {
         TestClass c = new TestClass("Hello World");
    }
}

&#34; Hello World&#34;当从main方法中调用构造函数时,将打印一次。

答案 2 :(得分:2)

是的,一个类调用自身的方法绝对没问题,

不,它不会循环,因为实例化一个类不会自动调用它的所有方法。

main方法运行的原因是因为Java寻找单个main方法作为其入口点。

main是一种static方法,因此无论如何它都与任何实例无关。

答案 3 :(得分:1)

在程序正常启动时,方法只被调用一次。

public static void main(String[] args) {

在此程序中,您的程序会从 ManageEmploye 类型创建一个对象,因此可以访问其非静态属性