Encapsulation – The process of hiding internal data away from other classes.
Abstraction – The process of hiding irrelevant details while providing a feature.
(with the side effect of reducing the code complexity.)
Inheritance – The process of providing properties and methods to derived classes.
Polymorphism – The ability of a derived class to take on different behaviors than the parent class provides.