focusing on essential characteristics of an object not all.
which hides internal details of object.
dividing cohesive and loosely coupled
(part of) – Aggregation
Inner objects life-time is not controlled by outer object.
Inner objects life-time is controlled by outer object.
Polymorphism ( can be Aggregation
Logical naming and grouping
It is white-box reusability. Concrete class can easily override the logic in base class.
It is black-box resuse, when I am using the object, I get access its public property but not its private.