Java 프로그램의 진입점 역할을 하는 main 메서드에는 반드시 public 접근 제어자를 사용해야 합니다. 만약 private으로 바꾸면 어떤 일이 발생하는지, 두 가지 예제를 통해 직접 확인해 보겠습니다.
1. main 메서드에 'public'을 사용한 경우
public class Demo{
public static void main(String args[]){
System.out.println("This is a sample only");
}
}실행 결과
This is a sample only
Demo라는 클래스 안에 public으로 선언된 main 메서드가 있습니다. 이 코드는 정상적으로 컴파일되고 실행되며, 콘솔에 지정한 메시지를 출력합니다.
2. 'public'을 'private'으로 바꾼 경우
public class Demo{
private static void main(String args[]){
System.out.println("This is a sample only");
}
}실행 결과
Error: Main method not found in class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
이번에는 Demo 클래스의 main 메서드가 public이 아닌 private으로 선언되어 있습니다. 이 경우 코드는 정상적으로 실행되지 않고, "main 메서드를 찾을 수 없다"는 오류가 발생합니다. 그 이유는 main 메서드가 private이기 때문에 외부에서 접근할 수 없기 때문입니다.
왜 main 메서드는 public이어야 할까?
프로그램이 시작될 때 JVM(Java Virtual Machine)은 클래스 외부에서 main 메서드를 호출합니다. 따라서 main 메서드가 private으로 선언되면 JVM이 해당 메서드에 접근할 수 없어 프로그램 실행 자체가 불가능해집니다. 결론적으로 main 메서드는 항상 아래와 같은 형태로 선언해야 합니다.
public static void main(String[] args)