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

Reply via email to