מדריך C# – תכנות מונחה עצמים: מחלקה אבסטרקטית
מחלקה אבסטרקטית הינה מחלקה אשר מהווה בסיס למחלקות אחרות, אך אין לנו באמת צורך באובייקטים ממנה בתוכנית.
- בכדי ליצור מחלקה אבסטרקטית יש לכתוב abstract לפני שם ה- class
- לא ניתן ליצור אובייקטים ממחלקה אבסטרקטית
- ניתן ליצור ייחוס ממחלקה אבסטרקטית (בד"כ לצורכי פולימורפיזם)
- מחלקה אבסטרקטית יכולה להכיל כל דבר שמחלקה רגילה יכולה להכיל
- מחלקה אבסטרקטית יכולה (אבל לא חייבת) להכיל פונקציות אבסטרקטיות
- לא ניתן לכתוב פונקציה אבסטרקטית במחלקה שהיא לא אבסטרקטית
- פונקציה אבסטרקטית היא פונקציה שאין לה מימוש. היא נכתבת כהצהרה ללא גוף (כלומר ללא בלוק של פקודות)
- כאשר יורשים מחלקה אבסטרקטית חובה לממש את כל הפונקציות האבסטרקטית שבה (אם יש)
- המימוש של פונקציה אבסטרקטית הוא באמצעות מילת המפתח override
להלן דוגמא ליצירת מחלקה אבסטרקטית עם פונקציה אבסטרקטית:
abstract class Shape
{
public abstract double GetArea();
}
class Circle : Shape
{
public double Radius { get; set; }
public override double GetArea()
{
return Math.PI * Radius * Radius;
}
}
class Program
{
static void Main(string[] args)
{
Shape b = new Circle() { Radius = 5 };
Console.WriteLine(b.GetArea());
}
}
השוואה בין virtual ל- abstract
abstract | virtual | |
מימוש הפונקציה במחלקה | אין מימוש של הפונקציה – לא צריך להגדיר את גוף הפונקציה, רק כותרת. | יש לממש את הפונקציה (בדומה לפונקציה רגילה). משמש לפולימורפיזם. |
מימוש הפונקציה במחלקות היורשות | חובה לממש במחלקות היורשות בצורה ישירה. | לא חובה לממש. |
מיקום הפונקציה | במחלקה אבסטרקטית בלבד | בכל מחלקה |
הצהרה | לא private (משום שאז הפונקציה לא תיראה במחלקות הנגזרות ולא נוכל לממש אותה) |
תגובות בפייסבוק