Abstract Data Type: A logical description of how we view the data and operations without regard to how they will be implemented
Encapsulation: Details of implementation are hidden from users’ point of view
Classes: Description of what data look like and what data can do. They are analogous to abstract data types
Objects: Instance of class
Inheritance: A class is derived from another (parent) class, inheriting all the public and protected properties and methods from the parent class. In addition, it can have its own properties and methods.
Singleton class: Restrics the instantiation of a class for only once.