Avatar ·

Was ist der Unterschied zwischen public, protected, package-private und private in Java?

Hallo zusammen! Ich habe gerade angefangen, Java zu lernen, und komme mit den Zugriffsmodifikatoren nicht klar. Ich verstehe zwar, dass sie die Sichtbarkeit von Klassen, Methoden und Feldern steuern, aber in der Praxis bin ich ständig verwirrt.

\n\n

Zum Beispiel habe ich diesen Code:

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