왜 main 메소드는 static일까.

일단 간단히 정리하면 자바에서 실행가능한 코드는 클래스 메소드와 인스턴스 메소드 뿐이 없기 때문이다.

일단 클래스 메소드(static)을 제외하고 생각해보자

그럼
public main(String[] args) {..}

같이 된다.

그런데 이 인스턴스 메소드를 호출하려면?
객체를 생성해야 할것이다.
어떻게?

만약 이 클래스가

public class A {
public A(int b){
}
public void main(String[] args) {
}
}

이라면 어떻게 초기에 생성하고 main을 실행시킬 것인가? 에 대한 정보가 필요하다

반면에 static으로 하게 되면 클래스명만이 필요한 정보가 된다.

그리고 여기에서 객체 생성에 대한 추가 정보를 주게 할수도, 또는 beans 처럼 main을 가지는 객체는 empty constructor를 가져야 한다는 컨벤션을 가지게 할수도 있었지만, 제임스 고슬링이 선택한 것은 이해하기 쉬운 솔루션이였고 그래서 main을 클래스 메소드로 지정한 것이다.

결국 자바에서 코드는 클래스 메소드와 인스턴스 메소드로만 한정한다는 언어 디자인상의 결정에서 파생된 컨벤션이다.

by 밀리네스 | 2008/11/26 16:24 | 트랙백

트랙백 주소 : http://milines.egloos.com/tb/1840963
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
※ 로그인 사용자만 덧글을 남길 수 있습니다.

◀ 이전 페이지다음 페이지 ▶