שאלת ראיונות קלאסית בסי-שארפ:
מה ההבדל בין קלאס אבסטרקטי לבין אינטרפייס?
הרי משניהם לא ניתן לייצר מופע.
והתשובה הפשוטה (גם אם לא מדוייקת במאה אחוז):
אינטרפייס – רק הגדרת "חוזה"שאומר "במה" חייבים לעמוד ולא "איך".
קלאס אבסטרקטי – אמנם גם יגדיר כנראה מתודות אבסטרקטיות אבל בהחלט גם יכול להכיל מימוש של פונקציות מסויימות (דבר שיש לו שימוש רב בפולימורפיזם, ובין השאר ב design pattern שאני מאוד אוהב: Template Method).
באה מיקרוסופט בסי-שארפ 8 והוסיפה את
default interface methods
המאפשר לתת מימוש דפולטיבי למתודה, כמו בתמונה פה. (שגם ממחישה שהקומפיילר לא צועק…)
יש לזה יתרונות כמובן, כי אני מקבל במתנה מימושים. ואני יכול לבחור אם לדרוס אותם או להנות ממה שקיבלתי.
אבל אני מוצא שזה מבלבל מתכנתים.
וכאמור קצת הרס שאלת ראיונות קלאסית…
מה דעתכם?