الفرق بين 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" بالضبط؟ متى يجب استخدام أي معدّل في المشاريع الحقيقية؟
اشرح لي، من فضلك، بكلمات بسيطة مع أمثلة. شكراً مسبقاً.