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 anahtar kelimesinin en yaygın kullanımı, üst sınıfın yapıcı metodunu (constructor) ç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ı düzgün bir şekilde başlatmak ve devralınan davranışı genişletmek için base anahtar kelimesini 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: Inventory ad alanında (namespace) bir Product sınıfı tanımlayın. Bu temel sınıf, bir Name özelliğine (string) ve Price özelliğine (decimal) sahip herhangi bir ürünü temsil eder. Her iki değeri de kabul eden bir yapıcı (constructor) ve "{Name}: ${Price}" döndüren bir GetInfo() metodu ekleyin.
  • ElectronicProduct.cs: Inventory ad alanında Product sınıfından miras alan bir ElectronicProduct sınıfı tanımlayın. Bu sınıf bir WarrantyMonths özelliği (int) ekler. Yapıcı; ad, fiyat ve garanti süresini kabul etmelidir - adı ve fiyatı üst sınıf yapıcısına iletmek için base kullanın. Önce base kullanarak üst sınıfın GetInfo() metodunu çağıran, ardından çıktıyı genişletmek için sonuna " (Warranty: {WarrantyMonths} months)" ekleyen bir GetInfo() metodu oluşturun.
  • Program.cs: Ana dosyanızda, giriş değerlerini kullanarak bir ElectronicProduct oluşturun ve GetInfo() metodunu çağırarak tam bilgilerini görüntüleyin.

Üç giriş alacaksınız:

  • Ürün adı
  • Fiyat
  • Garanti süresi (ay)

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

Örneğin, girişler 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 inşa edildiğine dikkat edin. base anahtar kelimesi, üst sınıfın davranışını sorunsuz bir şekilde yeniden kullanmanıza ve genişletmenize olanak tanır!

Kopya kağıdı

base anahtar kelimesi, türetilmiş bir sınıfın üst sınıfının üyelerine erişmesine olanak tanır.

Üst sınıfın yapıcı metodunu çağırmak için base kullanın:

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özdizimi, türetilmiş sınıfın yapıcı metot gövdesi çalışmadan önce üst sınıfın yapıcı metodunu çağırarak düzgün bir başlatma sağlar.

Türetilmiş sınıftan üst sınıf metotlarını çağırmak için base kullanın:

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!");
    }
}

Bu, üst sınıf davranışını tamamen değiştirmek yerine onu 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