Other than classes and objects, basic concepts of object-oriented languages include:
Inheritance:
Inheritance is a mechanism wherein a new class is derived from an existing class.
A class derived from another class is called a subclass, whereas the class from which a subclass is derived is called a superclass.
Aggregation:
Aggregation is Has-A relationship between two classes, whereas inheritance is Is-A relationship.
It makes a reference to one class according to other class.
When we need a class as a variable in some other class, in other words when we create an object of one class within another class, then this method is called aggregation.
Abstraction:
Its main goal 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.
Encapsulation:
It is a mechanism of wrapping the data (variables) and code acting on the data (methods) together as a single unit.
Therefore, the variables of a class will be hidden from other classes, and can be accessed only through the methods of their current class.
Polymorphism:
Polymorphism refers to the ability of a variable, function or object to take on multiple forms.
Overriding:
Overriding allows a subclass or child class to provide a specific implementation of a method that is already provided by one of its superclasses or parent classes.
Overloading:
Overloading is the ability to create multiple methods of the same name with different implementations.
Calls to an overloaded function will run a specific implementation of that function appropriate to the context of the call, allowing one function call to perform different tasks depending on context.