Encapsulation
the bundling of data (variables) and methods (functions) that operate on the data into a single unit. Restricts access to some attributes and exposes only necessary attributes for modification
Inheritance
Allowing a class to inherit properties and behaviors from another class, promoting code reuse and reducing redundancy.
Polymorphism
allows a single function or method to have multiple behaviors depending on the object calling it.
Abstraction
Hiding complex implementation details and showing only the essential features of an object to the user