The only way to test a class designed for inheritance is to write subclasses. If you omit a crucial protected member, trying to write a subclass will make the omission painfully obvious. Conversely, if several subclasses are written and none uses a protected member, you should probably make it private.
As said later, the subclasses should be written by someone other than the superclass author.
Share this highlighthttp://www.safaribooksonline.com/a/effective-java/112325/