override (مرجع #C)

المعدّل override مطلوب لتوسيع أو لتعديل التطبيق المجرد أو الظاهري للأسلوب أو الخاصية أو المفهرس أو الحدث الموروث.

مثال

في هذا المثال، يجب على الفئة Square أن توفر تطبيق متجاوز لـ Area لأن Area موروثة من الفئة المجردة ShapesClass:


abstract class ShapesClass
{
    abstract public int Area();
}
class Square : ShapesClass
{
    int side = 0;

    public Square(int n)
    {
        side = n;
    }
    // Area method is required to avoid
    // a compile-time error.
    public override int Area()
    {
        return side * side;
    }

    static void Main() 
    {
        Square sq = new Square(12);
        Console.WriteLine("Area of the square = {0}", sq.Area());
    }

    interface I
    {
        void M();
    }
    abstract class C : I
    {
        public abstract void M();
    }

}
// Output: Area of the square = 144

الأسلوب override يوفر تطبيق جديد للعضو الموروث من فئة أساسية. الأسلوب الذي يتم تجاوزه بواسطة تعريف override يُعرف بالأسلوب الأساسي المتجاوز. يجب أن يحتوي الأسلوب الأساسي المتجاوز نفس توقيع أسلوب الـ override. لمزيد من المعلومات حول الوراثة، انظر الوراثة (دليل البرمجة لـ #C).

لا يمكنك تجاوز الأسلوب الغير ظاهري أو الأسلوب الثابت. يجب أن يكون الأسلوب الأساسي المتجاوز virtual أو abstract أو override.

لا يمكن لتعريف override تغيير إمكانية وصول أي أسلوب virtual. كلاً من الأسلوب override والأسلوب virtual يجب أن يكون لديهما نفس معدّل مستوى الوصول.

لا يمكنك استخدام المعدلات new أو static أو virtual لتعديل أي أسلوب override.

تعريف الخاصية المتجاوزة يجب أن يحدد نفس معدّل الوصول ونفس نوع واسم الخاصية الموروثة ويجب أن تكون الخاصية المتجاوزة virtual أو abstract أو override.

لمزيد من المعلومات حول كيفية استخدام الكلمة الأساسية override، راجع تعيين الإصدارات مع الكلمات الأساسية override و new (دليل البرمجة لـ #C) و معرفة متى يمكن استخدام الكلمات الأساسية Override و New.

يحدد هذا المثال فئة أساسية باسم Employee وفئة مشتقة باسم SalesEmployee. الفئة SalesEmployee تتضمن فئة خاصية إضافية salesbonus وتتجاوز الأسلوب CalculatePay لوضعه في الاعتبار.

class TestOverride
{
    public class Employee
    {
        public string name;

        // Basepay is defined as protected, so that it may be 
        // accessed only by this class and derrived classes.
        protected decimal basepay;

        // Constructor to set the name and basepay values.
        public Employee(string name, decimal basepay)
        {
            this.name = name;
            this.basepay = basepay;
        }

        // Declared virtual so it can be overridden.
        public virtual decimal CalculatePay()
        {
            return basepay;
        }
    }

    // Derive a new class from Employee.
    public class SalesEmployee : Employee
    {
        // New field that will affect the base pay.
        private decimal salesbonus;

        // The constructor calls the base-class version, and
        // initializes the salesbonus field.
        public SalesEmployee(string name, decimal basepay, 
                  decimal salesbonus) : base(name, basepay)
        {
            this.salesbonus = salesbonus;
        }

        // Override the CalculatePay method 
        // to take bonus into account.
        public override decimal CalculatePay()
        {
            return basepay + salesbonus;
        }
    }

    static void Main()
    {
        // Create some new employees.
        SalesEmployee employee1 = new SalesEmployee("Alice", 
                      1000, 500);
        Employee employee2 = new Employee("Bob", 1200);

        Console.WriteLine("Employee4 " + employee1.name + 
                  " earned: " + employee1.CalculatePay());
        Console.WriteLine("Employee4 " + employee2.name + 
                  " earned: " + employee2.CalculatePay());
    }
}
/*
    Output:
    Employee4 Alice earned: 1500
    Employee4 Bob earned: 1200
*/

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

الوراثة (دليل البرمجة لـ #C)

الكلمات الأساسية لـ #C

المعدّلات (مرجع #C)

abstract (مرجع #C)

الظاهري ( مرجع C# )

new (مرجع #C)

التعدد (إرشادات برمجة C#)

المبادئ

دليل البرمجة لـ #C

موارد أخرى

مرجع C#‎