반응형
자바에서 예시들을 보면 public static void main(String[] args)라고 되어있는 main()함수를 볼 수 있다. 근데 main()이라고만 쓰면 되지 public static은 왜 붙는 것인가? 우선적으로 말하자면 main()함수는 자바에서 꼭 public static 선언을 해주어야한다. 이의 근거는 다음과 같다. 우선적으로 main()함수의 호출은 클래스의 외부로부터의 호출을 받는다. 즉 이 점에서 public선언을 해준다. 그 다음 main()메소드는 인스턴스 생성전에 호출이된다. 이 점에서 static선언을 해준다.(static 선언 성질 -> 인스턴스 정의 전에 호출할 수 있다.)
1 2 3 4 5 6 7 8 9 10 11 | class a { void b(){ System.out.println("Hello"); } } class c{ void d() { System.out.println("World"); } } | cs |
그럼 다음과 같은 두개의 클래스가 존재하는 코드가 있다고 가정하자. 이 코드에 main()함수를 넣어야 한다고 가정을 하면 어떻게 넣어야될까? 물론 클래스를 새롭게 생성해서 넣어줄 수 있다. 하지만 a나 c 클래스 안에 main()함수를 선언해 주어도 된다. 그 이유는 main()함수는 public static void main(String[] args)로 선언을 해주어야 한다. static선언에 의해 main()메소드는 어떠한 인스턴스에도 소속되어 있지 않다는 정의가 된다. 좀 더 쉽게 이해해보자면 a라는 클래스가 단지 main()메소드에게 '자리'를 주었다고 생각하면 된다.
형태 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class a { void b(){ System.out.println("Hello"); } public static void main(String[] args) { } } class c{ void d() { System.out.println("World"); } } | cs |
형태 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class a { void b(){ System.out.println("Hello"); } } class c{ void d() { System.out.println("World"); } public static void main(String[] args) { } } | cs |
반응형
'Language > Java' 카테고리의 다른 글
[Java]JVM메모리 구조 (0) | 2021.12.26 |
---|---|
메소드 오버로딩(Method Overloading) (0) | 2019.03.05 |
Class Method (0) | 2019.02.23 |
static을 붙여 선언한 클래스 변수 (0) | 2019.02.21 |
Java JDK, Eclipse 설치 링크 (0) | 2019.02.20 |