톱레벨 클래스는 한 파일에 하나만

한 파일에 여러 개의 클래스를 담을 수 있다. ( swift가 한 파일에 여러 struct를 선언하곤 한다. ) 그러나, 이렇게 되면 컴파일 순서에 따라 동작이 달라질 수도 있다.

Mango.java

class Mango {
    static final String NAME = "mango";
}
class Apple {
    static final String NAME = "apple";
}

Apple.java

class Mango {
    static final String NAME = "mango juice";
}
class Apple {
    static final String NAME = "apple juice";
}

Main.java

class Main {
    public static void main(String[] args) {
        System.out.println(Apple.NAME + " - " + Mango.NAME);
    }
}

이러면 컴파일 순서에 따라서 다르게 출력된다.