=====================
The main goal of Abstraction is to handle complexity by hiding unnecessary details from the user. That enables the user to ---implement more complex logic on top of the provided abstraction without understanding or even thinking about all the hidden complexity.
-----------
Abstraction in object-oriented programming (OOP) is the concept of hiding complex implementation details and exposing only the essential features of an object or system. It helps manage complexity by allowing developers to interact with objects at a high level without needing to understand their inner workings.
======================
Encapsulation is defined as wrapping up of data and information under a single unit
------------------
Encapsulation in object-oriented programming (OOP) is the practice of bundling data (attributes) and the methods that operate on that data into a single unit—typically a class
=======================
Inheritance in OOP = When a class derives from another class. The child class will inherit all the public and protected properties and methods from the parent class
Polymorphism is the ability of an object to take on many forms.
Compile time polymorphism and Runtime polymorphism. Method overloading, operator overloading, and method overriding are examples.