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