Object Oriented Programming (OOP)

Object Oriented Programming Main features
 * [Q] What is Object Oriented Programming?
 * [A] Object Orientation is all about objects that collaborate (interacts with each other) by sending messages. Each object has a collection of attributes (data) and methods that operate on the attributes (data).
 * [Q] What are main features of OOP?
 * [A] Main features
 * Abstraction: An abstraction denotes the essential characteristics of an object that distinguish it from the all other kinds of objects.
 * Encapsulation: Encapsulation is data hidding. It hides implementation details from calling method. With the use of private, protected and public
 * Inheritance: A mechanism that defines a new class which inherit the properties (attributes) and behaviours (methods) of a parent class.
 * Polymorphism: Ability to process objects differently depending on their data type or class.
 * Example: Sending object does not need to know class of receiving object or how object will respond
 * [Q] Overloading vs Overriding
 * [A] Overloading  occurs when two or more methods in one class have the same method name but different parameters.
 * Overriding  means having two methods with the same method name and parameters (i.e., method signature ). One of the methods is in the parent class and the other is in the child class. Overriding allows a child class to provide a specific implementation of a method that is already provided its parent class.