Oops Concepts

Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOPS.

Class:
In object-oriented programming, a class is a programming language construct that is used as a blueprint to create objects. This blueprint includes attributes and methods that the created objects all share.
Further Details on Class

Object:
In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variables to access objects, the terms object and variable are often used interchangeably.
Further Details on Object

Inheritance:
inheritance is a way to compartmentalize and reuse code by creating collections of attributes and behaviors called objects which can be based on previously created objects
Further Details on Inheritance

Encapsulation:
Encapsulation means as much as shielding. Each OO object has a shield around it. Objects can't 'see' each other. They can exchange things though, as if they are interconnected through a hatch.
Further Details on Encapsulation

Data Abstraction:
Abstraction is the process by which data and programs are defined with a representation similar to its meaning (semantics), while hiding away the implementation details. Abstraction tries to reduce and factor out details so that the programmer can focus on a few concepts at a time
Further Details on Data Abstraction

Polymorphism:
This refers to the ability to assume different forms. In OOP, it indicates a language’s ability to handle objects differently based on their runtime type. When objects communicate with one another, we say that they send and receive messages.
Further Details on Polymorphism

Method Overloading:
Two methods having the same name are not allowed in the case of C-language, for every data type even though the functionality in the same; we should maintain different method names. It increases the complexity of the programming.
Further Details on Method Overloading

Method Overriding:
you don’t want parent class implementation for any method we can override in the child class based on our child class requirement. This concept is called Overriding.
Further Details on Method Overriding

Method Hiding: 
This is exactly same as overriding except both parent & child class methods must be declared as static. In the method hiding the method resolution take care by compiler only based on the reference type.
Further Details on Method Hiding

Method Signature:
The method signature is compiled with method name and argument list (the order of arguments also important).   Return type is not part of the signature.
Further Details on Method Signature
 
Constructor:
The purpose of Constructor is to perform of our creted object. Whenever we are calling new operator for the creation of object, it calls constructor automatically to provide initialization for the object.
Further Details on Construtors