한개의 소스 파일에 하나의 클래스만을 정의하는 것이 보통이나, 하나의 소스파일에 둘 이상의 클래스를 정의하는 것도 가능하다. 이 때 주의해야 할 점은 '소스파일 이름은 public class의 이름과 일치해야한다.' 라는 것이다. 만일 소스파일 내에 public class가 없다면, 소스파일의 이름은 소스파일 내의 어떤 클래스의 이름으로 해도 상관없다.
(Hello2.java)
public class Hello2 {}
class Hello3 {}
public class가 있다. 이 때에는 소스파일 이름인 Hello2랑 맞춰주어야 한다.
(Hello2.java)
class Hello2 {}
class Hello3 {}
public class가 하나도 없는 경우, 소스파일의 이름은 'Hello2.java', 'Hello3.java'둘 다 가능하며, 방금 테스트 해 본 결과 아무 이름이나 상관없다.
(Hello2.java)
public class Hello2 {}
public class Hello3 {}
하나의 소스파일에 둘 이상의 public class가 존재하면 안된다. 둘을 다른 소스파일에 적거나 하나의 클래스에서 public을 떼야 한다.
(Hello2.java)
class Hello2 {}
public class Hello3 {}
소스파일 이름은 Hello2인데 public은 Hello3에 붙어있으니 안된다.
(hello2.java)
public class Hello2 {}
class Hello3 {}
소스파일의 이름과 public class의 이름이 정확히 일치(대,소문자 포함)해야 한다.
여기서 나왔던 public이라는 접근 제어자(access modifier)에 대해서는 접근 제어자 라는 태그명으로 검색하면 찾을 수 있을 것이다.