الواجهات (ارشادات البرمجة C#)

يتم تعريف الواجهات باستخدام الكلمة الأساسية واجهة ، كما هو موضح في المثال التالي:

interface IEquatable<T>
{
    bool Equals(T obj);
}

تصف واجهات مجموعة من الوظائف ذات الصلة التي يمكن أن تنتمي إلى أيفئة أو بنية. يمكن أن تتألف الواجهات من الأساليب,خصائص الأحداث, المفهرسات, أو أي تركيبة الأنواع الأعضاء الأربعة. لا يمكن أن تحتوي الواجهة على حقول. أعضاء الواجهات عمومية بشكل تلقائي.

عندما تشير الفئة أو البنية لوراثة واجهة، فهذا يعني أن الفئة أو البنية تنص على تنفيذ جميع الأعضاء المعرفة بالواجهة. وتوفر الواجهة نفسها أية وظائف يمكن للفئة أو البنية أن ترثها بالطريقة الموروثة ووظائف الفئة الأساسية. ومع ذلك، إذا قامت فئة أساسية بتطبيق الواجهة ،فإن الفئة المشتقة ترث هذا التطبيق.

يمكن أن ترث الفئات والبنيات من الواجهات بطريقة مشابهة لطريقة ارثها للفئة الأساسية أو البنية، باستثناء حالتين:

  • الفئة أو البنية يمكن أن يرث واجهة واحدة أو أكثر.

  • عندما ترث فئة أو بنية واجهة، فإنها ترث الأسلوب, الأسماء, والتواقيع، فقط لأنه يحتوي على واجهة نفسها لا تحتوي على التنفيذ. فعلى سبيل المثال:

    public class Car : IEquatable<Car>
    {
        public string Make {get; set;}
        public string Model { get; set; }
        public string Year { get; set; }
    
        // Implementation of IEquatable<T> interface
        public bool Equals(Car car)
        {
            if (this.Make == car.Make &&
                this.Model == car.Model &&
                this.Year == car.Year)
            {
                return true;
            }
            else
                return false;
        }
    }
    

لتنفيذ عضو في الواجهة، فإن عضو المراسل في الفئة يجب أن يكون عام, غير ثابت, وله نفس الاسم والتوقيع كالعضو في الواجهة. يمكن تحديد خصائص مفهرسات على فئة موصلين إضافية للممتلكات أو المفهرس المعرفة على واجهة. على سبيل المثال، قد تعرف الواجهة خاصية مع الموصل الحصول ولكن يمكنك تعريف فئة الواجهة بنفس الخاصية مع كلا الموصلين get و تعيين. ومع ذلك، إذا كانت الخاصية أو المفهرس تستخدم تطبيق صريح, يجب أن يتطابق الموصلين.

الواجهات وأعضاء الواجهة المجردة؛ والواجهات لا توفر التنفيذ الافتراضي. للحصول معلومات أكثر, راجع الفئات المختومة تجريديًا و أعضاء الفئة.

الواجهة IEquatable<T> تعلن للمستخدم موضع الكائن حيث يمكن له تحديد ما إذا كان مساو لكائنات أخرى من نفس النوع، والمستخدم بالواجهة غير ملزم لمعرفة كيف تم تنفيذ هذا.

يمكن أن ترث الواجهات واجهات أخرى. من الممكن لفئة إلى ترث واجهة عدة مرات من خلال واجهات ترث أو الفئات الأساسية. في هذه الحالة، الفئة يمكن فقط أن تطبق الواجهة مرة واحدة إذا تم تعريفها كجزء من فئة جديدة. إذا لم يتم تعريف الواجهة الموروثة كجزء من فئة جديدة يتم توفير تطبيق بواسطة الفئة الأساسية التي تم تعريفها به. فمن الممكن لفئة أساسية تطبيق أعضاء الواجهة باستخدام أعضاء ظاهريين; وفي هذه الحالة، يمكن لفئة وراثة الواجهة تغيير سلوك واجهة بتجاوز الأعضاء الظاهريين. لمزيد من المعلومات حول الأعضاء الظاهريين راجع polymorphism.

نظرة عامة عن الواجهات

للواجهة الخصائص التالية:

  • تشبه الواجهة فئة قاعدة مجردة: أي نوع من أنواع الغير مجردة ترث الواجهة يجب عليها تنفيذ جميع أعضائها.

  • يتعذر إنشاء مثيل للواجهة مباشرة.

  • يمكن أن تحتوي الواجهات على الأحداث, مفهرسات, أساليب, وخصائص.

  • لا تحتوي الواجهات على أساليب تنفيذ.

  • الفئات والبنيات يمكن أن يرث من واجهة واحدة أو أكثر.

  • يمكن للواجهة نفسها أن ترث من واجهات متعددة.

في هذا القسم

الأقسام ذات الصلة

راجع أيضًا:

المرجع

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

المبادئ

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