Encapsulation in Java
What is Encapsulation?
Encapsulation is the process of wrapping data (variables) and code (methods) together as a single unit — typically inside a class.
        It’s also called "data hiding" because it restricts direct access to class variables.
    
Key Features of Encapsulation
- Make variables private
 - Provide public getter and setter methods to access/change them
 - Control what data can be seen or modified
 
Example of Encapsulation:
    
    class BankAccount {
        private double balance;  // private variable (hidden)
        // Getter
        public double getBalance() {
            return balance;
        }
        // Setter
        public void setBalance(double amount) {
            if (amount >= 0) {
                balance = amount;
            } else {
                System.out.println("Invalid amount!");
            }
        }
    }
    public class Main {
        public static void main(String[] args) {
            BankAccount acc = new BankAccount();
            acc.setBalance(5000.75);       // modify using setter
            System.out.println(acc.getBalance());  // access using getter
        }
    }
    
    
    Output:
    
    5000.75
    
    
    Why Use Encapsulation?
| Benefit | Description | 
|---|---|
| Data Hiding | Prevents direct access to sensitive fields | 
| Controlled Access | Only expose what is needed | 
| Security | Protects object’s internal state | 
| Code Flexibility | Easy to update or refactor | 
| Cleaner API | Users interact via methods, not internal variables | 
Real Life Analogy
- 
        Imagine a coffee machine:
        
 - You press a button to make coffee.
 - You can’t see or access internal parts like wiring or boiler.
 - That’s encapsulation — the complexity is hidden, and only the interface is exposed.
 
Summary
| Concept | Description | 
|---|---|
| What | Wrapping data and methods inside a class | 
| How | Use private + getters & setters | 
| Benefit | Security, clean code, control, and maintainability |