This week's book giveaway is in the OCMJEA forum. We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line! See this thread for details.
Thats because the file name of the source code needs to be the same as the public class it contains. Would be difficult to know what to call the file if you could put two public classes inside one source file. [ October 10, 2004: Message edited by: Dominic Steng�rd ]
javac compiler and the java interpreter need a way to search your entire CLASSPATH for the classes you require in your program. The only externally visible identifier of a compiled .class file is the filename. So the filename must be enough to find the classes you need. If there were a public class named Abc in a .class file named Fgh.class, javac and java would have no way to find it.
You might ask about classes with protected or package access. There, the directory names found in the directories in your CLASSPATH provide a visible trail to your classes.