2013-08-14 4 views
3

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();? 감사.

+6

주 방법은 한 번 호출됩니다. 루프가있는 곳은 어디입니까? –

답변

14

main 메서드는 정의 된 클래스의 새 인스턴스를 만드는 것이 일반적입니다.하지만 인스턴스를 만들면 main이 다시 호출되지는 않습니다. main은 특정 인스턴스에 묶여 있지 않은 정적 메서드임을 기억하십시오.

2

예, 절대적으로 클래스의 방법,

자체를 호출에 문제가 없다 그리고 아니,이 클래스를 인스턴스화하면 자동으로 모든 메소드를 호출하지 않기 때문에, 루프하지 않습니다.

main 메서드가 실행되는 이유는 Java가 단일 main 메서드를 엔트리 포인트로 찾기 때문입니다.

mainstatic 메서드이므로 어쨌든 어떤 인스턴스와도 연결되지 않습니다.

1

이 메서드는 프로그램이 정상적으로 시작될 때 한 번만 호출됩니다. 이 프로그램에서

public static void main(String[] args) { 

은으로 실행되는 유형 ManageEmploye에서 개체를 만들고, 그래서 그 비 정적 특성에 다른 회원 여기에 언급되지 않습니다

2

중요한 점에 액세스 할 수 있습니다 프로그램을 만들고 클래스를 인스턴스화하는 것은 다른 두 가지입니다. 당신이 그것을 포함하는 클래스를 실행할 때

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

주요 방법은 실행 : 당신이 자바 안녕하세요을 썼을 때, 다음을 썼다. 그러나, (정적 맥락에서)이 메인 메소드 내에서 다음과 같은 작업을 수행 할 수 있습니다

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

이가 인스턴스화라고하며, 여기에 우리가 유형 String와 함께 ArrayList를 인스턴스화된다. 이 경우 ArrayList 내부의 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"); 
    } 
} 

생성자가 내에서 호출 할 때 "안녕하세요"는 한 번 인쇄됩니다 주요 방법.

관련 문제