- Restrict access to methods and attributes preventing accidental modification of data.
- An extension of Encapsulation - it is added to our classes so they only expose what it needs to the public
- Something appears in different forms.
- Classes interacting with each other and some being subclasses of another taking on some similar attributes