Ah good point. In fact I have had non-public classes combined in a public class's file. And usually quickly regretted it. :)
On Wed, Apr 21, 2010 at 1:26 PM, Bob Kerns <[email protected]> wrote: > (This may or may not be more information than the OP needed. But there > may be confusion there worth clarifying). > > Actually, Dianne, that's only true of top-level classes with the > 'public' modifier. You can have top-level classes that are package- > private in the same file -- but no more than one 'public'', and the > file must be named with the same name as the class, plus the ".java" > suffix. > > However -- that is ALMOST never done! > > Binxalot -- I'm afraid you're mistaken -- I'm reasonably certain that > you have NOT seen all the methods and classes in one big java file. > > Either you've misunderstood what you were seeing, because it was all > on one web page, or something else. Let's not worry about any > confusion from web page formatting... > > If you were actually looking at .java files, then you were probably > thrown off by one of these points: > > *) A java class definition cannot be split between files. All methods > and fields will appear within the same file, which will contain the > *complete* definition of that class. > > *) A java class definition can contain INNER class definitions. These > are not independent definitions. If they do not include the 'static' > keyword before the 'class' keyword, they can only be instantiated in > the context of an instance of the outer class. If they DO include the > 'static' keyword before the 'class' keyword, then you can view them as > being somewhat akin to namespaces in intent. That is, the class name > is available within the scope of that class; to be used elsewhere it > needs to either be explicitly qualified with outer class name, e.g. > (Outer.Inner, or com.example.java.Outer.Inner), or imported with the > 'import static' statement. > > If you don't wish to do this, then you can instead use packages and > make these inner classes top-level. Eclipse provides convenient > commands to do this. > > Note that inner classes that have the 'public' modifier can be > referenced outside the package, and those that have the 'protected' > modifier can be referenced by subclasses of the outer class. Those > with 'private' can only be accessed within the class, and those with > no modifier can only be accessed by other classes within the same > package. This is a bit more flexible than top-level classes, which can > only be 'public' or default (i.e. private to the package). > > I hope this helps you read the code a bit easier. It's best to think > of one .java file as being one complete unit; there may be inner and > private classes, but it provides only one top-level class to other > packages, and it provides the complete definition of that class. > > The compiler will output each class to its own .class file, including > inner classes. They'll be in the same directory as other classes in > the same package, but with names constructed to avoid conflicts. > Anonymous (nameless) inner classes will get generated names. So all of > these .class files have to be packaged up in an Java application. > > On Apr 20, 2:53 pm, Dianne Hackborn <[email protected]> wrote: > > The Java compiler requires that each top-level class be in its own source > > file. > > > On Tue, Apr 20, 2010 at 2:41 PM, Binxalot <[email protected]> wrote: > > > I'm coming over from C# where I can make a namespace and then have > > > each class placed into its own .cs file if I want, but in all of the > > > examples I've seen for android all of the methods and classes are all > > > in one big java file. > > > > > Is it possible to put my classes in to their own java files and then > > > import those classes into a main program java file as needed like I do > > > in C#? > > > > > -- > > > You received this message because you are subscribed to the Google > > > Groups "Android Developers" group. > > > To post to this group, send email to > [email protected] > > > To unsubscribe from this group, send email to > > > [email protected]<android-developers%[email protected]><android-developers%2Bunsubs > [email protected]> > > > For more options, visit this group at > > >http://groups.google.com/group/android-developers?hl=en > > > > -- > > Dianne Hackborn > > Android framework engineer > > [email protected] > > > > Note: please don't send private questions to me, as I don't have time to > > provide private support, and so won't reply to such e-mails. All such > > questions should be posted on public forums, where I and others can see > and > > answer them. > > > > -- > > You received this message because you are subscribed to the Google > > Groups "Android Developers" group. > > To post to this group, send email to [email protected] > > To unsubscribe from this group, send email to > > [email protected]<android-developers%[email protected]> > > For more options, visit this group athttp:// > groups.google.com/group/android-developers?hl=en > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

