Daniel Rall wrote:
> 
> "Geir Magnusson Jr." <[EMAIL PROTECTED]> writes:
> 
> > Daniel Rall wrote:
> > >
> > > "Geir Magnusson Jr." <[EMAIL PROTECTED]> writes:
> > >
> > > > Eric Dobbs wrote:
> > > > >
> > > > > On Wednesday, June 20, 2001, at 09:21 PM, Geir Magnusson Jr. wrote:
> > > > >
> > > > > > Daniel Rall wrote:
> > > > > >>
> > > > > >> Boiled down from a discussion w/ jvz on IRC:
> > > > > >>
> > > > > >> Classes implementing a given piece of functionality that don't
> > > > > >> absolutely need to be public (such as those which are only used
> > > > > >> internally by that functionality), should provide only a package or
> > > > > >> derivitative-accessible API (default or protected access for both
> > > > > >> class and methods).
> > > > > >>
> > > > > >
> > > > > > Doesn't this mean that if the said class isn't declared public, you
> > > > > > force the derived class to be placed in the package?
> > > > >
> > > > > If I understand correctly, a protected method can be used by any
> > > > > subclass, regardless of the package.  Whereas the default access
> > > > > means that only subclasses in the same package can use those
> > > > > methods.
> > > > >
> > > >
> > > > That's right.  But above, it says default or protected access for both
> > > > *class* and methods - implying the subclass is of the same package?
> > >
> > > Classes cannot be protected, so default access only applies to class
> > > themselves.  Protected access should be preferred to default for
> > > methods, since protected methods are also available to other classes
> > > in the same package (not just to subclasses, as is often assumed).
> > >
> > > Does this clarify things?
> >
> > The point I am focusing on is that the classes should be public if you
> > want people to extend them and *not* have to put their code in the same
> > package.  Isn't that right?
> 
> Correct.  My thinking is that they should only be package-private
> (i.e. default access) if they are part of the internal workings of the
> service or its gears.  We can always open them up later if people find
> that they are actually needed.
> 
> However, are you suggesting that if all the methods in these classes
> are protected, that the classes should just be public any way?

No. (I'm sorry I brought this up :)

All I was suggesting was that *if* you want people to extend classes
*and* you don't want them to have to put those classes in the package of
the base class, then you should make the class public.

That's all :)

geir

-- 
Geir Magnusson Jr.                           [EMAIL PROTECTED]
System and Software Consulting
Developing for the web?  See http://jakarta.apache.org/velocity/
You have a genius for suggesting things I've come a cropper with!

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to