In earlier chapters we have several times noted how an object naturally suggests a public and a private face. In fact, inheritance introduces a third face. There are the public features that are seen by the world at large, the private features that are completely internal to the implementation of an object, and the third face, the face seen by child classes. This third face is in many languages termed the protected aspects of a class.
By means of modifiers, programmers can control the visibility of data fields and methods, making then either public, private, or protected.