The inclusion of both data and actions in such a way that their structure is hidden and can only be accessed from outside the class though specific methods (i.e. accessors and mutators).
A relationship which signifies that one object is a specialized form of another. It allows new classes to be derived from existing classes.
When the compiler is able to understand the method signatures and decide the method that needs to be invoked for a particular method call depending on the number and types of parameters passed. This also occurs when a subclass overrides the actions of the superclass.