Object-Oriented Programming (OOP) in Java is a programming paradigm that organizes software design around objects and classes. The key concepts in OOP are:
1. Encapsulation: Bundling data (variables) and methods (functions) into a single unit (class) and restricting access to some components using access modifiers (private, public, etc.).
2. Abstraction: Hiding complex implementation details and exposing only essential features using abstract classes or interfaces.
3. Inheritance: A mechanism where a class (subclass) inherits properties and behaviors (methods) from another class (superclass), promoting code reusability.
4. Polymorphism: The ability of an object to take on many forms, achieved through method overloading (compile-time) and method overriding (run-time).
These principles enable more modular, reusable, and maintainable code.