Re: Interface Delegation or ??
tam@milkyway.gsfc.nasa.gov wrote:
I'm not clear what you're getting at. Certainly a coder explicitly
chooses to include an interface, but once they do they have no choice
about implementing the methods as public. When implementing a package
level interface in a public class a code must expose the package
methods.
Well, there's your mistake right there. You're not supposed to implement
package-level interfaces in public classes. Package-level interfaces are for
package-level classes, otherwise for public classes use a public interface.
If you want to lock down certain parts of the implementation, which is what
methods at less than public access are for, use an abstract class as the
parent and put those parts there.
Interfaces do not exist for the purpose of specifying implementation, thus
they do not support method-level access less than public. Period. That's
their whole point. If you want an interface to be used only within the
package, you declare the whole interface package-private, and use it only for
package-private classes.
The point of an interface is that it makes a supertype with all method
signatures defined, but *not* implementation. Having it support
less-than-public methods would defeat its purpose.
Again, if your interface is not public, then neither should its implementors
be. That's the Java idiom. It's abstract classes that you want, in order to
nail down parts of the implementation.
--
Lew