먼저 톱레벨 클래스가 무엇인지 알아보자.
다음은 oracle 공식 페이지에 나온 톱레벨 클래스에 대한 설명이다.
A top level class is a class that is not a nested class.
톱 레벨 클래스는 중첩 클래스가 아닌 클래스이다.
즉 우리가 일반적으로 사용하는 단일 형태의 클래스를 말한다.
그렇다면 중첩 클래스는 무엇일까?
A nested class is any class whose declaration occurs within the body of another class or interface.
중첩 클래스란 다른 클래스/인터페이스 내부에 선언된 클래스를 뜻한다.
그렇다면 한 파일에 여러개의 톱레벨 클래스가 담긴 것은 무엇을 뜻할까?
바로 중첩되지 않은 클래스가 하나의 java 파일에 여러개 담긴 것을 뜻한다.
class A {
String NAME = "a";
}
class B{
String NAME = "b";
}
A.java
class B {
String NAME = "aa";
}
class A{
String NAME = "bb";
}
B.java
이 처럼 A와 B파일에 같은 클래스를 순서만 바꿔서 선언한 경우,
javac 명령을 통해 컴파일할 때 컴파일 순서에 따라 동작이 달라질 수 있다고 한다.
(하지만 우리의 똑똑한 IDE는 이를 미리 잡아준다.)
-
한 개의 파일에 한 개의 톱레벨 클래스만 둔다.
-
정적 멤버 클래스 방식을 사용한다.
public class AB {
private static class A {
}
private static class B {
}
}