File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes One Public Class Per Source File? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "One Public Class Per Source File?" Watch "One Public Class Per Source File?" New topic

One Public Class Per Source File?

rajani ramsagar

Joined: Oct 10, 2004
Posts: 1
Hi All!

I had this doubt that, why should a source file have only one public class?

1. If a source file has more than one public class, the compiler won't allow. why?
Dominic Steng�rd
Ranch Hand

Joined: Feb 05, 2001
Posts: 186
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 ]

Dominic Steng�rd<br />Sun Certified Java 2 Programmer
Mike Gershman
Ranch Hand

Joined: Mar 13, 2004
Posts: 1272
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.

Mike Gershman
SCJP 1.4, SCWCD in process
Tony Morris
Ranch Hand

Joined: Sep 24, 2003
Posts: 1608

You might ask about classes with protected or package access

A top-level class can never have protected access.

Here is an example of some source with two public classes in one source file:

To better rephrase, "You can't have more than one public top-level class in a single Java source file."

Tony Morris
Java Q&A (FAQ, Trivia)
I agree. Here's the link:
subject: One Public Class Per Source File?
It's not a secret anymore!