(i) Data abstraction: Abstraction refers to the act of representing essential features without including the background details or explanation. Data abstraction is the process of defining a data type, often called abstract data type (ADT), together with the principle of data hiding.
(ii) Class: Class is a collection of objects of same data types. Class contents data and functions that operate on data.
(iii) Dynamic binding: Linking of function call to function definition at run time is defined as dynamic binding
(iv) Polymorphism: Polymorphism means ability to take more than one form at different instances depending on the type or number of arguments.