Bhai, Java ka Object-Oriented Programming (OOPs) concept ekdum basic aur important hai. Yeh samajhne ke baad programming easy aur logical lagti hai. Main ekdum ground level se, examples ke saath, saari cheezein samjhaunga. Chalo shuru karte hain!
1. Object-Oriented Programming (OOPs) Kya Hai?
- OOPs ek programming paradigm hai jo objects ke upar kaam karta hai.
- Har object ke paas data (attributes) aur behavior (methods) hota hai.
Real-Life Example:
Socho tum ek Car
bana rahe ho:
- Attributes: Color, model, engine power, brand, etc.
- Behavior: Start, stop, accelerate, brake, etc.
Yeh pura ka pura OOPs ka base hai – real-world entities ko code mein model karna.
2. 4 Pillars of OOPs
OOPs ke 4 main features hain:
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
Ab inhe examples ke saath samjhte hain.
3. Class and Object (Base Concepts)
Class:
- Ek blueprint ya template hoti hai jo objects banane ke liye use hoti hai.
- Socho
Car
ek class hai, aur tum isse different objects (Honda
,BMW
) bana sakte ho.
Object:
- Ek instance of a class hota hai.
- Agar
Car
class hai, tohHonda
ek object hoga jo attributes aur methods define karega.
Code Example:
class Car { // This is a class (blueprint)
String brand; // Attribute
int speed; // Attribute
void start() { // Method
System.out.println(brand + " is starting!");
}
void accelerate() {
System.out.println(brand + " is accelerating at " + speed + " km/h!");
}
}
public class Main {
public static void main(String[] args) {
// Creating objects
Car honda = new Car(); // Object 1
honda.brand = "Honda";
honda.speed = 120;
Car bmw = new Car(); // Object 2
bmw.brand = "BMW";
bmw.speed = 150;
// Using methods
honda.start(); // Output: Honda is starting!
honda.accelerate(); // Output: Honda is accelerating at 120 km/h!
bmw.start(); // Output: BMW is starting!
bmw.accelerate(); // Output: BMW is accelerating at 150 km/h!
}
}
4. Encapsulation
- Data ko wrap karna aur usse hide karna.
- Attributes ko
private
banate hain aur access karne ke liye getters aur setters ka use karte hain. - Encapsulation ka fayda:
- Data secure rehta hai.
- Code modular aur maintainable banata hai.
Code Example:
class Student {
private String name; // Private attribute
private int age;
// Setter for name
public void setName(String name) {
this.name = name;
}
// Getter for name
public String getName() {
return name;
}
// Setter for age
public void setAge(int age) {
if (age > 0) { // Validation
this.age = age;
} else {
System.out.println("Age must be positive!");
}
}
// Getter for age
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student();
// Using setters to set data
student.setName("Yash");
student.setAge(20);
// Using getters to get data
System.out.println("Name: " + student.getName()); // Output: Yash
System.out.println("Age: " + student.getAge()); // Output: 20
}
}
5. Inheritance
- Ek class (child) doosri class (parent) se properties aur methods inherit karti hai.
- Use karte ho jab ek concept ya entity ke multiple variations ho.
Example:
Parent Class: Animal
Child Classes: Dog
, Cat
Code Example:
// Parent class
class Animal {
String name;
void eat() {
System.out.println(name + " is eating.");
}
}
// Child class
class Dog extends Animal {
void bark() {
System.out.println(name + " is barking.");
}
}
// Child class
class Cat extends Animal {
void meow() {
System.out.println(name + " is meowing.");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "Tommy";
dog.eat(); // Output: Tommy is eating.
dog.bark(); // Output: Tommy is barking.
Cat cat = new Cat();
cat.name = "Kitty";
cat.eat(); // Output: Kitty is eating.
cat.meow(); // Output: Kitty is meowing.
}
}
6. Polymorphism
- Many forms ka matlab hai ki same method ko alag-alag tarike se use kar sakte ho.
- 2 types:
- Compile-Time Polymorphism (Method Overloading):
- Same method name but different parameters.
- Run-Time Polymorphism (Method Overriding):
- Child class parent class ke method ko override karta hai.
- Compile-Time Polymorphism (Method Overloading):
Code Example (Overloading):
class Calculator {
// Method 1: Add 2 numbers
int add(int a, int b) {
return a + b;
}
// Method 2: Add 3 numbers
int add(int a, int b, int c) {
return a + b + c;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(10, 20)); // Output: 30
System.out.println(calc.add(10, 20, 30)); // Output: 60
}
}
Code Example (Overriding):
class Vehicle {
void start() {
System.out.println("Vehicle is starting.");
}
}
class Car extends Vehicle {
@Override
void start() {
System.out.println("Car is starting.");
}
}
public class Main {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.start(); // Output: Vehicle is starting.
Vehicle car = new Car();
car.start(); // Output: Car is starting.
}
}
7. Abstraction
- Bas important details dikhani hain, internal implementation hide karna.
- Achieve karte ho:
- Abstract Classes
- Interfaces
Abstract Class Example:
abstract class Shape {
abstract void draw(); // Abstract method (no body)
void display() {
System.out.println("This is a shape.");
}
}
class Circle extends Shape {
@Override
void draw() {
System.out.println("Drawing a circle.");
}
}
public class Main {
public static void main(String[] args) {
Shape shape = new Circle();
shape.draw(); // Output: Drawing a circle.
shape.display(); // Output: This is a shape.
}
}
Interface Example:
interface Animal {
void sound(); // Method without body
}
class Dog implements Animal {
public void sound() {
System.out.println("Dog barks.");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
dog.sound(); // Output: Dog barks.
}
}
8. Why Use OOPs?
- Code Reusability: Inheritance se code reuse hota hai.
- Modularity: Code easily manageable hota hai (encapsulation).
- Flexibility: Polymorphism se same method ka alag behavior milta hai.
- Real-World Modeling: Real-world objects ko model karna easy hai.
Final Words:
Bhai, bas concepts ko clear rakh aur coding practice kar. OOPs ek bar samajh gaya toh tumhare code ka structure aur readability next level pe chali jayegi! Agar aur doubt ho, toh bata de, ek aur example ke saath samjha dunga.