Avatar ·

الفرق بين public و protected و package-private (الافتراضي) و private في Java

مرحباً بالجميع! لقد بدأت للتو في تعلم Java ولا أستطيع فهم معدّلات الوصول. يبدو أنني قرأت النظرية، لكن في الممارسة العملية أخلط باستمرار بين متى أكتب `public` ومتى أكتب `private`. على سبيل المثال، لدي هذا الكود: ```java public class Animal { public String name = "Unknown"; protected int age = 5; String breed = "Mixed"; // package-private private String id = "A123"; public void showInfo() { System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("Breed: " + breed); System.out.println("ID: " + id); } } ``` في كلاس آخر في نفس الحزمة، يمكنني الوصول إلى `name` و `age` و `breed`، لكن ليس إلى `id`. وإذا قمت بإنشاء فئة فرعية في حزمة أخرى، يمكنني استخدام `name` و `age` فقط. لماذا هذا؟ وماذا يعني "package-private" بالضبط؟ متى يجب استخدام أي معدّل في المشاريع الحقيقية؟ اشرح لي، من فضلك، بكلمات بسيطة مع أمثلة. شكراً مسبقاً.