Programming/Java

[JAVA] public class & class 차이

cbw1030 2019. 4. 2. 00:50
반응형

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 키워드가 없는 경우라면 자바 파일명과 클래스명이 일치하지 않을 수 있다고 생각할 수 있다.

 

반응형