ماذا تسمي ذلك عندما "ترث" واجهة ما من أخرى؟

StackOverflow https://stackoverflow.com/questions/807217

  •  03-07-2019
  •  | 
  •  

سؤال

إذا كان لدي الفئة ب:أ {}

أقول أن "الفئة ب وارث الفئة "أ" أو "الفئة ب مشتقة من الفئة أ".

ومع ذلك، إذا كان لدي بدلاً من ذلك:

  class B : ISomeInterface   {}

من الخطأ أن نقول "B يرث IsomeInterface" - المصطلح الصحيح هو أن نقول "B ينفذ IsomeInterface".

ولكن، أقول لدي

  interface ISomeInterface : ISomeOtherInterface   {}

الآن، لا يزال من الخطأ قول "يرث"، ولكن من الخطأ أيضًا قول "ينفذ" نظرًا لأن IsomeInterface لا ينفذ أي شيء.

إذن ماذا تسمي تلك العلاقة؟

هل كانت مفيدة؟

المحلول

وأنا شخصيا أقول "يمتد" وأنا <م> يعتقد في C # المواصفات يستخدم تلك الكلمة وكذلك في مكان ما (لا أستطيع العثور عليه الآن، للأسف) - ولكن أتذكر اريك ليبرت قائلا انه لم يكن حريص على ذلك، وأراد أن تتغير لانها 4.0.

وأعتقد أنه أمر جيد، لأنه يظهر أنك تمديد العقد المحدد من قبل واجهة الأصلي.

وتحرير: بعد النظر في المواصفات 3.0 ...

وهذا النوع المواصفات الجانبية الخطوات من هذه القضية في القسم 13.2. يتحدث عن أعضاء يجري ورثت من واجهات القاعدة. فهي تتحدث عن واحد <م> الدرجة تمديد آخر، ولكن واجهات لا

وتحرير: في C # 5 المواصفات، قسم 13.1.4، ويستخدم يرث:

<اقتباس فقرة>   

واجهة يمكن أن ترث من صفر أو أكثر من أنواع اجهة

وولهذا ربما كان أفضل المدى للاستخدام.

نصائح أخرى

وأنا أسميها "تمتد".

وعادة، وأنا أسميها overengineering.

باعتباره مصدر موثوق وفي حال كنت بحاجة إلى عرض أسعار مفيد، وجدته معلومات على MSDN الذي يصف "وراثة الواجهة" مع مثال عملي لبنية وراثة الواجهة لـ ComboBox و Control و Listbox و TextBox:

ومع ذكر الواجهة الأساسية الصريحة

يمكن أن ترث الواجهة من صفر واجهات أو أكثر, التي تسمى واجهات أساسية واضحة من الواجهة.

مثال:

interface IControl
{
   void Paint();
}
interface ITextBox: IControl
{
   void SetText(string text);
}
interface IListBox: IControl
{
   void SetItems(string[] items);
}
interface IComboBox: ITextBox, IListBox {}

مصدر:

http://msdn.microsoft.com/en-us/library/aa664578%28VS.71%29.aspx

وماذا سيكون من الخطأ أن نقول InterfaceB "يرث" أو "مشتقة من" InterfaceA؟ "تنفذ" سيكون خطأ، لأن InterfaceB لا يوفر التنفيذ. لغويا، اشتقاق واجهات هي مشابهة جدا لاستخلاص الدروس. C ++، على سبيل المثال، لا يميز بين واجهات والطبقات على الإطلاق.

وكنت قد حصلت على تعريف الخطأ.

B: A يعني "B يرث من A"

وعندما نقول "B تنفذ InterfaceA"، وهذا يعني عادة InterfaceA لايوجد تعريف للعمل - انها نماذج فقط (أو، PURE في C ++). ولكن في C ++ والأكثر OOPL، ويرث وتنفيذ أسهم نفس بناء الجملة.

وهكذا، InterfaceB: InterfaceA لا يزال يعني "InterfaceB يرث InterfaceA"

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top