شرح Java

التجريد والواجهات

الصنف المجرّد (abstract)

لا يُنشأ منه كائن مباشرة — قالب للأصناف الوارثة، قد يحوي دوالًا مجرّدة (بلا جسم):

public abstract class Shape {
  abstract double area();        // مجرّدة — على الوارث تنفيذها

  void describe() {              // عادية
    System.out.println("المساحة: " + area());
  }
}

public class Circle extends Shape {
  double r;
  Circle(double r) { this.r = r; }
  double area() { return 3.14 * r * r; }
}

الواجهة (interface)

عقد من الدوال يلتزم الصنف بتنفيذها — تدعم "الوراثة المتعدّدة":

public interface Drawable {
  void draw();
}

public interface Clickable {
  void click();
}

public class Button implements Drawable, Clickable {
  public void draw()  { System.out.println("رسم"); }
  public void click() { System.out.println("نقر"); }
}

abstract مقابل interface

abstract classinterface
الوراثةواحدة (extends)متعدّدة (implements)
الحقولعاديةثوابت فقط
الدوالمجرّدة + عاديةمجرّدة (و default)
متىأصناف متقاربة تشترك في كودقدرة مشتركة لأصناف مختلفة

💡 القاعدة: "هو نوع من" → وراثة/abstract؛ "قادر على" → interface.

🎯 التالي: معالجة الاستثناءات (Exceptions).