0Pricing
C# Academy · درس

virtual وoverride وsealed؛ الفئات المجرّدة

تعلّم الأساليب virtual وإعادة التعريف وتأمين عمليات إعادة التعريف والفئات المجرّدة؛ وشاهد كيف توجّه المراجع الأساسية الاستدعاءات إلى تطبيقات الفئات المشتقة.

virtual وoverride وsealed؛ الفئات المجرّدة درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.

أساسيات الوراثة

الهدف: إعادة استخدام السلوك وتخصيصه من خلال الوراثة.

  • virtual في النوع الأساسي
  • override في النوع المشتق
  • sealed override لمنع المزيد من التغييرات
  • abstract class يحدد عقدًا وشيفرة مشتركة

virtual وoverride

يتيح virtual إعادة التعريف. تستخدم الاستدعاءات عبر مرجع إلى النوع الأساسي إعادة التعريف الموجودة في النوع المشتق (التوزيع الديناميكي).

using System;

// Base method is virtual so derived classes can customize it
public class Shape
{
  public virtual double Area()
  {
    return 0.0; // default
  }
}

public class Rectangle : Shape
{
  public int Width { get; private set; }
  public int Height { get; private set; }

  public Rectangle(int w, int h)
  {
    Width = w; Height = h;
  }

  public override double Area()
  {
    return Width * Height;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Shape s = new Shape();
    Shape r = new Rectangle(3, 4); // base reference
    Console.WriteLine("Shape area = " + s.Area());
    Console.WriteLine("Rectangle area = " + r.Area()); // calls Rectangle.Area()
  }
}

sealed override

استخدم sealed override لتثبيت أسلوب عند مستوى معين في التسلسل الهرمي.

using System;

public class BaseLogger
{
  public virtual string Prefix()
  {
    return "[LOG]";
  }
}

public class ConsoleLogger : BaseLogger
{
  public sealed override string Prefix()
  {
    return "[CONSOLE]";
  }
}

// Further derived class cannot override Prefix again:
// public class FancyLogger : ConsoleLogger
// {
//   public override string Prefix() { return "[FANCY]"; } // compile error
// }

public class Program
{
  public static void Main(string[] args)
  {
    ConsoleLogger log = new ConsoleLogger();
    Console.WriteLine(log.Prefix() + " Ready");
  }
}

الفئات abstract

تحدد الفئات abstract أعضاء مطلوبة (abstract)، ويمكنها أيضًا توفير شيفرة مشتركة.

using System;

// Abstract class: cannot be instantiated; must implement abstract members
public abstract class Animal
{
  public abstract string Speak(); // no body here
  public string Info()
  {
    return "Animal says: " + Speak(); // shared code uses the abstract member
  }
}

public class Dog : Animal
{
  public override string Speak()
  {
    return "Woof";
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Animal a = new Animal(); // compile error: abstract
    Animal d = new Dog();
    Console.WriteLine(d.Info()); // calls Dog.Speak()
  }
}

virtual مقابل abstract

اختر:

  • virtual: وفّر جسمًا افتراضيًا يمكن للأنواع المشتقة إعادة تعريفه.
  • abstract: لا يوجد جسم؛ ويجب على الأنواع المشتقة التنفيذ.
  • sealed override: أوقف عمليات إعادة التعريف الإضافية بعد تثبيت السلوك.

الاستدعاءات متعددة الأشكال

تعدد الأشكال: يقبل الأسلوب النوع الأساسي ويستدعي الأعضاء المعاد تعريفها في النسخ المشتقة.

using System;

public class Notifier
{
  public virtual string Channel() { return "Base"; }
}

public class EmailNotifier : Notifier
{
  public override string Channel() { return "Email"; }
}

public class SmsNotifier : Notifier
{
  public override string Channel() { return "SMS"; }
}

public class Program
{
  // Works with any Notifier (polymorphism)
  static void Send(Notifier n, string msg)
  {
    Console.WriteLine("[" + n.Channel() + "] " + msg);
  }

  public static void Main(string[] args)
  {
    Send(new EmailNotifier(), "Hello");
    Send(new SmsNotifier(), "Hi");
  }
}

قاعدة virtual/override/sealed

تحقق سريع: أي عبارة صحيحة عن virtual وoverride وsealed في C#؟

مراجعة

مراجعة: علّم أساليب النوع الأساسي باستخدام virtual، وأعد تعريفها في الأنواع المشتقة، واستخدم sealed override لتثبيت السلوك. استخدم الفئات abstract لفرض عمليات التنفيذ مع مشاركة الشيفرة العامة.

الأسئلة الشائعة

هل درس «virtual وoverride وsealed؛ الفئات المجرّدة» مجاني؟

نعم — نص درس «virtual وoverride وsealed؛ الفئات المجرّدة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.

ماذا ستتعلم في «virtual وoverride وsealed؛ الفئات المجرّدة»؟

تعلّم الأساليب virtual وإعادة التعريف وتأمين عمليات إعادة التعريف والفئات المجرّدة؛ وشاهد كيف توجّه المراجع الأساسية الاستدعاءات إلى تطبيقات الفئات المشتقة. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.

كم من الوقت يستغرق درس «virtual وoverride وsealed؛ الفئات المجرّدة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. virtual وoverride وsealed؛ الفئات المجرّدة
  2. الواجهات (مقدمة) وتطبيق واجهات متعددة
  3. التعددية الشكلية والإرسال الديناميكي
← العودة إلى C# Academy