[Java] 자바에서 파일 명과 클래스 명이 같아야 하는 이유
자바를 공부하다 클래스에 들어가면 항상 듣는 이야기가 있어요.
자바에선 파일 명과 안에 클래스 이름 명은 동일해야 합니다.
실제로 다른 클래스 형을 선언할 수 없어서, 그냥 그렇구나아...하고 넘어갔지만 이번 기회에 왜 그럴 수 없는지에 대해 찾아봤어요.
번역하자면,
- 자바 프로그램을
.java
확장 파일로 작성하고, 이를 컴파일하게 되면.class
확장명의 바이트 코드가 생성되요. 이를 서로 동일한 이름으로 해야 별다른 모호성 없이 이해를 하기가 쉬워지죠. 물론public class
가 아닌class
는 얼마든지 선언은 가능해요(!).public class
에 한해서 파일 명과 클래스 명은 동일해야 해요. - 그렇게 일치가 되어야
JVM
이 이를 진입점Entry Point
로 인식을 하기 때문이에요. - 하나 이상의 클래스를 가지고 있는 프로그램을 만든다 가정해 보면, 이는 동일한 개수의
.class
파일을 만들게 되겠죠. 이러한 상황에서 자바 인터프리터는 해석해야 하는 클래스와 프로그램 진입점을 포함하는 클래스를 식별하기 쉽지 않죠. 그래서 이름을 동일하게 해서 구분하기 쉽게 하는 거에요(이건 의역 ㅎ)
결국 JVM
에서 이렇게 돌아가도록 구현해놨고, 클래스 식별을 쉽게 하기 위한 것이라고 볼 수 있겠어요. 그리고 이번에 공부하면서 알게된 사실인데 실제로 class
는 따로 구현할 수가 있어요.
// 파일명 Test.java
class Test2 {} // 가능
// public class Test3 {} // 불가
// private class Test4 {} // 불가
public class Test{
public class Test5 {} // 가능
}
이것저것 확인해보고 되는 것과 안되는 것을 구분해 봤어요 ㅎㅎ. 소소하지만 확실한 지식의 상승을 느끼네요.
참고
Author And Source
이 문제에 관하여([Java] 자바에서 파일 명과 클래스 명이 같아야 하는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@redgem92/자바에서-파일-명과-클래스-명이-같아야-하는-이유저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)