Java Encapsulation and Abstraction - Advanced Guide

Encapsulation: Detailed Explanation

Encapsulation ek aisa OOP principle hai jisme data members (variables) aur methods ko ek class ke andar bundle kiya jata hai, aur bahar ke direct access se roka jata hai, jo data security aur integrity ke liye zaroori hai.

Encapsulation Example with Explanation

class BankAccount {
    private String accountNumber;
    private double balance;

    // Getter method
    public String getAccountNumber() {
        return accountNumber;
    }

    // Setter method with validation
    public void setAccountNumber(String accNo) {
        if(accNo != null && accNo.length() == 10) {
            this.accountNumber = accNo;
        } else {
            System.out.println("Invalid account number");
        }
    }

    // Getter for balance
    public double getBalance() {
        return balance;
    }

    // Deposit method
    public void deposit(double amount) {
        if(amount > 0) {
            balance += amount;
        }
    }

    // Withdraw method with condition
    public boolean withdraw(double amount) {
        if(amount > 0 && amount <= balance) {
            balance -= amount;
            return true;
        } else {
            System.out.println("Insufficient Balance or Invalid amount");
            return false;
        }
    }
}

public class TestBankAccount {
    public static void main(String[] args) {
        BankAccount acc = new BankAccount();
        acc.setAccountNumber("1234567890");
        System.out.println("Account Number: " + acc.getAccountNumber());

        acc.deposit(5000);
        System.out.println("Balance after deposit: " + acc.getBalance());

        boolean success = acc.withdraw(2000);
        System.out.println("Withdraw success: " + success);
        System.out.println("Balance after withdrawal: " + acc.getBalance());
    }
}

Abstraction: Detailed Explanation

Abstraction mein internal complex details hide karke sirf essential features ko show kiya jata hai, jisse software simpler bana hai. Java me abstraction either abstract classes ya interfaces ke madhyam se achieve hota hai.

Abstraction Example with Abstract Class

abstract class Vehicle {
    abstract void start();

    void stop() {
        System.out.println("Vehicle stopped");
    }
}

class Car extends Vehicle {
    @Override
    void start() {
        System.out.println("Car started");
    }
}

public class TestVehicle {
    public static void main(String[] args) {
        Vehicle v = new Car();
        v.start();
        v.stop();
    }
}