Menu
Coddy logo textTech

מילת המפתח 'base'

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 20 מתוך 70.

כשמחלקה נגזרת יורשת ממחלקת בסיס, לעיתים קרובות צריך לגשת ישירות לחברים של מחלקת האב. מילת המפתח base מספקת את החיבור הזה ומאפשרת לקרוא לבנאי של מחלקת הבסיס או לגשת למתודות ולמאפיינים שלה.

השימוש הנפוץ ביותר ב-base הוא קריאה לבנאי של מחלקת האב. כשאתה יוצר אובייקט נגזר, באפשרותך להעביר ערכים למחלקת הבסיס:

public class Animal
{
    public string Name { get; set; }
    
    public Animal(string name)
    {
        Name = name;
    }
}

public class Dog : Animal
{
    public string Breed { get; set; }
    
    public Dog(string name, string breed) : base(name)
    {
        Breed = breed;
    }
}

התחביר : base(name) קורא לבנאי של Animal לפני שגוף הבנאי של Dog מופעל. כך מוודאים שמחלקת הבסיס מאותחלת כראוי תחילה.

אפשר גם להשתמש ב־base כדי לקרוא למתודות של מחלקת האב מתוך המחלקה הנגזרת:

public class Animal
{
    public void Speak()
    {
        Console.WriteLine("Animal sound");
    }
}

public class Dog : Animal
{
    public void Speak()
    {
        base.Speak();  // קורא ל-Speak של Animal
        Console.WriteLine("Woof!");
    }
}

כאן, base.Speak() קוראת במפורש לגרסה של המתודה במחלקת האב. זה שימושי כשאתה רוצה להרחיב את ההתנהגות של מחלקת האב במקום להחליף אותה לחלוטין.

challenge icon

אתגר

קל

בואו נבנה מערכת לניהול מלאי מוצרים שמדגימה כיצד מחלקות נגזרות משתמשות במילת המפתח base כדי לאתחל כראוי את מחלקת האב שלהן ולהרחיב התנהגות שעברה בירושה.

תיצרו שלושה קבצים כדי לארגן את הקוד שלכם:

  • Product.cs: הגדירו מחלקה בשם Product במרחב השמות Inventory. מחלקת בסיס זו מייצגת כל מוצר שיש לו מאפיין Name (מחרוזת) ומאפיין Price (מספר עשרוני). כללו בנאי שמקבל את שני הערכים ומתודה GetInfo() שמחזירה "{Name}: ${Price}".
  • ElectronicProduct.cs: הגדירו מחלקה בשם ElectronicProduct במרחב השמות Inventory, שיורשת מ-Product. המחלקה הזו מוסיפה מאפיין WarrantyMonths (מספר שלם). הבנאי צריך לקבל שם, מחיר וחודשי אחריות — השתמשו ב-base כדי להעביר את השם והמחיר לבנאי של מחלקת האב. צרו מתודה בשם GetInfo() שקוראת תחילה למתודה GetInfo() של מחלקת האב באמצעות base, ואז מוסיפה " (Warranty: {WarrantyMonths} months)" כדי להרחיב את הפלט.
  • Program.cs: בקובץ הראשי שלכם, צרו מופע של ElectronicProduct באמצעות ערכי הקלט והציגו את המידע המלא שלו באמצעות קריאה ל-GetInfo().

תקבלו שלושה ערכי קלט:

  • שם המוצר
  • מחיר
  • חודשי אחריות

הדפיסו את התוצאה של קריאה ל-GetInfo() על המוצר האלקטרוני שלכם.

לדוגמה, אם ערכי הקלט הם Laptop, 999.99 ו-24, הפלט צריך להיות:

Laptop: $999.99 (Warranty: 24 months)

שימו לב כיצד המחלקה הנגזרת מתבססת על הפלט של מחלקת הבסיס במקום לשכפל את הלוגיקה. מילת המפתח base מאפשרת לכם לעשות שימוש חוזר בהתנהגות של מחלקת האב ולהרחיב אותה בצורה חלקה!

נסו בעצמכם

using System;
using Inventory;

class Program
{
    public static void Main(string[] args)
    {
        // קרא את נתוני הקלט
        string name = Console.ReadLine();
        decimal price = Convert.ToDecimal(Console.ReadLine());
        int warrantyMonths = Convert.ToInt32(Console.ReadLine());

        // TODO: צור ElectronicProduct עם ערכי הקלט
        
        // TODO: הדפס את התוצאה של הקריאה ל-GetInfo() על המוצר האלקטרוני שלך
        
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C# אונליין