Program.java 라는 이름을 가진 클래스 파일로 예시를 들어보자.

 

Program.java

class Program {
}

문제없이 컴파일이 잘 된다.

위 소스 파일에 아래와 같은 클래스를 하나 더 추가해보자.

class Program {
{

class Program2 {
}

역시나 문제없이 컴파일이 잘 된다.

그렇다면 아래와 같이 수정을 해보자.

class Program {
}

public class Program2 {
}

Program2라는 클래스 앞에 public이라는 접근제어자를 붙였더니 이번에는 컴파일 에러가 발생한다.

그럼 아래와 같이 수정을 해보자.

public class Program {
}

class Program2 {
}

문제없이 컴파일이 잘 된다. 어떤 차이일까?

위와 같이 컴파일되는 이유는 파일명(Program.java)때문이다. 

자바에는 클래스명 앞에 public이란 접근제어자를 추가하면 그 클래스의 이름은 파일명과 동일해야만 하는 규칙이 있다.

 

그렇다면 왜 이런 규칙을 만들었을까?

보통 이렇게 하나의 자바파일에 여러 개의 클래스를 작성하는 경우에는 하나의 대표 클래스를 지정하고 파일명과 동일하게 하는 것이 코드의 가독성에 도움이 된다고 한다.

 

이제 소스코드를 읽을 때 public 키워드가 붙어있는 class를 보게 된다면 현재 소스코드가 어떤 자바 파일명으로 저장되어 있는지 예상을 할 수 있다. 또한 public 키워드가 없는 경우라면 자바 파일명과 클래스명이 일치하지 않을 수 있다고 생각할 수 있다.

'📌 java > java' 카테고리의 다른 글

java - abstract  (0) 2020.04.04
java - API  (0) 2020.03.17
java - 패키지  (0) 2020.03.10
java - 클래스 패스, 환경 변수 [참고용]  (0) 2020.03.10
java - overloading  (0) 2020.03.10
복사했습니다!