> Since Java doesn't have inherited preconditions, you're just going to
> have to trust that people who sub-class to not violate the public API.
> But as Bertrand Meyer would say, it's not up to you to predict and
> prevent people from extending your class.
If we exposed all internals as protected, we'd have our hands tied for
implementing things differently in the next version. Anything protected
or public cannot change w/o breaking backward compatibility. You've got
to think long term. That's why the language has the private keyword.
And there's also
http://www.webopedia.com/TERM/I/information_hiding.html
-jh-