Object Oriented Programming (OOP) is a programming paradigm based on the concept of “objects,” which can contain data in the form of fields (also called attributes or properties) and code in the form of methods (functions).
- OOP focuses on organizing software design around data, or objects, rather than functions and logic.
- In OOP, programs are designed by creating classes, which are blueprints for objects, and then using these classes to create multiple objects that interact with one another to solve a problem.
- OOP helps make programs more modular, reusable, maintainable, and scalable.
Principles of Object-Oriented Programming:
There are four main principles of OOP:
1.) Encapsulation:
It is the concept of wrapping data (variables) and code (methods) together into a single unit called a class, and restricting access to some of the object’s components.
- It hides the internal details of how an object works and exposes only what is necessary through a public interface.
- This protects the data from being accessed or modified directly and helps achieve data security and integrity.
2.) Abstraction:
It is the principle of hiding complex implementation details and showing only the essential features of an object.
- Through abstraction, programmers can reduce complexity and focus on interactions at a higher level.
- In Java, abstraction is achieved using abstract classes and interfaces, allowing the user to use objects without knowing the full implementation.
3.) Inheritance:
It is the process by which one class (called a subclass or child class) acquires the properties and behaviors (methods) of another class (called a superclass or parent class).
- It promotes code reuse and establishes a hierarchical relationship between classes.
- It allows new classes to be created based on existing ones, with the ability to extend or override behavior.
4.) Polymorphism:
It means “many forms” and allows objects to be treated as instances of their parent class, but behave differently depending on the actual object type.
- It allows a single interface to be used for different underlying data types.
- It is of two types: compile-time polymorphism (method overloading) and run-time polymorphism (method overriding).
