Menu
Coddy logo textTech

'base' Anahtar Kelimesi

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 20 / 70.

Türetilmiş bir sınıf bir temel sınıftan miras aldığında, genellikle üst sınıfın üyelerine doğrudan erişmeniz gerekir. base anahtar kelimesi bu bağlantıyı sağlayarak temel sınıf yapıcısını çağırmanıza veya yöntemlerine ve özelliklerine erişmenize olanak tanır.

base kullanımının en yaygın biçimi, üst sınıfın yapıcısını çağırmaktır. Türetilmiş bir nesne oluştururken değerleri temel sınıfa aktarabilirsiniz:

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) söz dizimi, Dog yapıcı metot gövdesi çalışmadan önce Animal yapıcı metodunu çağırır. Bu, temel sınıfın önce düzgün bir şekilde başlatılmasını sağlar.

Türetilmiş sınıf içinden üst sınıf yöntemlerini çağırmak için base ifadesini de kullanabilirsiniz:

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

public class Dog : Animal
{
    public void Speak()
    {
        base.Speak();  // Animal'ın Speak metodunu çağırır
        Console.WriteLine("Woof!");
    }
}

Burada, base.Speak() metodun üst sınıftaki sürümünü açıkça çağırır. Bu, üst sınıfın davranışını tamamen değiştirmek yerine genişletmek istediğinizde yararlıdır.

challenge icon

Görev

Kolay

Türetilmiş sınıfların, üst sınıflarını doğru şekilde başlatmak ve devralınan davranışı genişletmek için base anahtar sözcüğünü nasıl kullandığını gösteren bir ürün envanter sistemi oluşturalım.

Kodunuzu düzenlemek için üç dosya oluşturacaksınız:

  • Product.cs: Product ad alanında bir Inventory sınıfı tanımlayın. Bu temel sınıf, Name özelliği (string) ve Price özelliği (decimal) bulunan herhangi bir ürünü temsil eder. Her iki değeri kabul eden bir oluşturucu ve GetInfo() döndüren bir "{Name}: ${Price}" metodu ekleyin.
  • ElectronicProduct.cs: ElectronicProduct ad alanında Inventory sınıfından miras alan bir Product sınıfı tanımlayın. Bu sınıf bir WarrantyMonths özelliği (int) ekler. Oluşturucu ad, fiyat ve garanti aylarını kabul etmelidir; ad ve fiyatı üst sınıf oluşturucusuna aktarmak için base kullanın. Önce GetInfo() kullanarak üst sınıfın GetInfo() metodunu çağıran, ardından çıktıyı genişletmek için sonuna base ekleyen bir " (Warranty: {WarrantyMonths} months)" metodu oluşturun.
  • Program.cs: Ana dosyanızda, girdi değerlerini kullanarak bir ElectronicProduct oluşturun ve GetInfo() çağrısıyla tüm bilgilerini görüntüleyin.

Üç girdi alacaksınız:

  • Ürün adı
  • Fiyat
  • Garanti ayları

Elektronik ürününüz üzerinde GetInfo() çağrısının sonucunu yazdırın.

Örneğin girdiler Laptop, 999.99 ve 24 ise çıktı şu şekilde olmalıdır:

Laptop: $999.99 (Warranty: 24 months)

Türetilmiş sınıfın mantığı tekrarlamak yerine temel sınıfın çıktısı üzerine nasıl ekleme yaptığına dikkat edin. base anahtar sözcüğü, üst sınıfın davranışını sorunsuz bir şekilde yeniden kullanmanıza ve genişletmenize olanak tanır!

Kendin dene

using System;
using Inventory;

class Program
{
    public static void Main(string[] args)
    {
        // Girdileri oku
        string name = Console.ReadLine();
        decimal price = Convert.ToDecimal(Console.ReadLine());
        int warrantyMonths = Convert.ToInt32(Console.ReadLine());

        // TODO: Girdi değerleri ile bir ElectronicProduct oluşturun
        
        // TODO: Elektronik ürününüz üzerinde GetInfo() çağırmanın sonucunu yazdırın
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online C# derleyicisi