// Main.java
public class Main {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
}
// Utensil.java
class Utensil {
static final String NAME = "pan";
}
class Dessert {
static final String NAME = "cake";
}
Main.java
를 실행하면 pancake
가 잘 출력된다.Dessert.java
파일에도 동일하게 클래스를 다음과 같이 정의한다.
class Utensil {
static final String NAME = "pot";
}
class Dessert {
static final String NAME = "pie";
}
javac Main.java Dessert.java // 1) 컴파일 오류
javac Main.java // 2) pancake 출력
javac Main.java Utensil.java // 3) pancake 출력
javac Dessert.java Main.java // 4) potpie 출력
Main.java
를 컴파일하고, 그 안에서 Utensil
의 참조를 만나면 Utensil.java
파일을 통해 Utensil
과 Dessert
를 모두 찾아낸다. 그 다음에 Dessert.java
를 처리하려고 할 때 이미 같은 클래스의 정의가 있음을 알게 된다.Utensil
과 Dessert
)을 서로 다른 소스 파일로 분리!public class Main {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
private static class Utensil{
static final String NAME = "pan";
}
private static class Dessert{
static final String NAME = "cake";
}
}