in general, I prefer to use protected instead of private for fields to allow subclasses to override.  In rare case I use private to specifically indicate to developers that there's some safety reason that I want to prevent subclasses from overriding. But most of the time, protected is a good default.