מחלקה אבסטרקטית הינה מחלקה אשר מהווה בסיס למחלקות אחרות, אך אין לנו באמת צורך באובייקטים ממנה בתוכנית.
- בכדי ליצור מחלקה אבסטרקטית יש לכתוב 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 (משום שאז הפונקציה לא תיראה במחלקות הנגזרות ולא נוכל לממש אותה) |
|



למאמר הקודם