الصنف المجرّد (abstract)
لا يُنشأ منه كائن — قالب للأصناف الوارثة:
abstract class Shape
{
public abstract double Area(); // بلا جسم — على الوارث تنفيذها
public void Describe() => Console.WriteLine($"المساحة: {Area()}");
}
class Circle : Shape
{
public double R;
public Circle(double r) { R = r; }
public override double Area() => 3.14 * R * R;
}
الواجهة (interface)
عقد من الأعضاء يلتزم الصنف بتنفيذها — تدعم التعدّد:
interface IDrawable
{
void Draw();
}
interface IClickable
{
void Click();
}
class Button : IDrawable, IClickable
{
public void Draw() => Console.WriteLine("رسم");
public void Click() => Console.WriteLine("نقر");
}
💡 الاصطلاح: أسماء الواجهات تبدأ بـ
I(مثلIEnumerable).
abstract مقابل interface
| abstract class | interface | |
|---|---|---|
| الوراثة | واحدة | متعدّدة |
| التنفيذ | قد يحوي كودًا | تواقيع (و default منذ C# 8) |
| متى | أصناف متقاربة تشترك في كود | قدرة مشتركة لأنواع مختلفة |
🎯 التالي: معالجة الاستثناءات.