Lazare,

I cannot agree with you here. This is exactly why the "protected" keyword
> exists: to provide a black-box interface for class usage through
> inheritance. Yes, this is not automatic and, yes it needs designing, but it
> is certainly not against the principles. If it were, we should remove the
> "protected" keyword as well.
>

The protected keyword is there to provide encapsulation. Meaning to allow
the responsibilities to be encapsulated within the object tree, rather than
being publicly exposed. It is not there to be a "black box", as you still
need to bind to a non-public interface to use it. It doesn't have anything
to do with providing a "black box interface". It's about delegating
encapsulation, but once you extend into a class tree, any notion of being a
black box by very definition has to go away (especially since the base
class can override or write to any of your protected properties as well)...

Anthony

Reply via email to