소스파일 하나에 톱레벨 클래스를 여러개 선언하지 말자

→ 여러개 선언 시, 한 클래스를 여러 가지로 정의할 수 잇으며, 그중 어느 것을 사용할지는 어느 소스 파일을 먼저 컴파일하느냐에 따라 달라지기 때문

public class Main{
	public static void main(String[] args){
		System.out.println(Utensil.Name + Dessert.Name);
	}
}
// Utensil.java
class Utensil {
	String NAME = "pan";
}

class Dessert{
	String NAME = "cake";
}
// Dessert.java
class Utensil{
    String NAME = "pot";
}

class Dessert{
    String NAME = "pie";
}

→ 어떤 파일을 먼저 컴파일하는지에 따라 사용되는 클래스가 달라짐

해결 방법