Avatar ·

Java में public, protected, package-private और private में क्या अंतर है?

सभी को नमस्ते! मैंने अभी Java सीखना शुरू किया है और एक्सेस मॉडिफायर को समझ नहीं पा रहा हूँ। मैं समझता हूँ कि वे classes, methods और fields की दृश्यता को नियंत्रित करते हैं, लेकिन व्यवहार में मैं लगातार भ्रमित हो जाता हूँ।

उदाहरण के लिए, मेरे पास यह कोड है:

public class Animal {
    public String name;
    protected int age;
    String breed; // package-private
    private String id;
    
    public void makeSound() {
        System.out.println("Some sound");
    }
    
    protected void sleep() {
        System.out.println("Sleeping...");
    }
    
    void eat() {
        System.out.println("Eating...");
    }
    
    private void breathe() {
        System.out.println("Breathing...");
    }
}

public class Dog extends Animal {
    public void testAccess() {
        name = "Buddy"; // accessible
        age = 5;        // accessible
        breed = "Lab";  // accessible
        // id = "123";  // NOT accessible - private
        makeSound();    // accessible
    }
}