반응형
자바 언어를 배우면서 클래스의 이름은 소스파일명과 같아야 한다는 것은 지극히 당연한 일이죠?
한 소스파일 내에 클래스가 여러 개 있을 때는 소스파일명과 동일한 클래스에만 public이라는 접근제어자를 사용할 수 있는데 그 이유가 궁금해서 정리해봤습니다.
그 이유는
자바의 컴파일과 네임스페이스 관리 방식과 관련이 있기 때문입니다.
소스 파일명과 클래스 이름이 동일한 경우 컴파일러는 해당 클래스 파일의 이름을 소스 파일명과 동일하게 생성합니다.
이러한 방식은 자바의 일관성과 그 구조를 유지하는 데에 도움을 준다고 합니다.
또한 클래스의 접근성과 사용범위를 명확하게 유지할 수 있습니다.
그렇다면 한 소스 파일명에 여러 개의 클래스가 있는 경우 왜 다른 클래스에는 public 접근제어자를 사용할 수 없을까요?
이것은 자바의 컴파일 및 로드 매커니즘과 관련이 있습니다.
자바 컴파일러는 소스 파일을 컴파일할 때 각 클래스를 각각의 바이트코드 파일로 분리해서 생성합니다.
클래스 파일의 이름은 해당 클래스의 이름과 동일하게 지정되는데 public 접근제어자를 사용할 수 있는 클래스와 해당 클래스 파일의 이름이 일치해야만 클래스의 접근성과 사용범위를 명확하게 유지할 수 있기 때문입니다.
같은 소스 파일에 여러 개의 클래스 중 소스파일명과 이름이 다른 클래스에는 public 접근제어자는 사용할 수 없지만 대신 package-private 접근제어자를 사용해서 해당 패키지 내에서만 접근할 수 있도록 제한하게 됩니다.
반응형
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 로컬 클래스에서 final 변수를 사용해야 하는 이유 (0) | 2023.06.03 |
---|---|
자바 포맷팅과 날짜와 시간 클래스 사용 (2) | 2023.05.30 |
자바에서의 메모리 누수를 데몬 스레드로 해결할 수 있을까? (0) | 2023.05.27 |
포장클래스 의미와 사용하는 이유 (0) | 2023.05.24 |
자바에서 구현과 상속을 동시에 사용하는 경우(implements, extends) (0) | 2023.05.10 |