-
Abstraction: distilling core concepts, functionality, and functionality from complex systems.
-
Encapsulation: bundling an object's properties and methods together and hiding some of them from the outside world.
-
Inheritance: allowing a child class to inherit the characteristics of a parent class, allowing it to be reused, added to, and extended.
-
Polymorphism: A single method or class can behave in many different ways.
-
Overloading: having multiple methods with the same name, "static" polymorphism that occurs during "compilation
-
Overriding: A child class overriding a method inherited from a parent class, 'dynamic' polymorphism that occurs during 'runtime'.