'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.
Görev
KolayTü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:Productad alanında birInventorysınıfı tanımlayın. Bu temel sınıf,Nameözelliği (string) vePriceözelliği (decimal) bulunan herhangi bir ürünü temsil eder. Her iki değeri kabul eden bir oluşturucu veGetInfo()döndüren bir"{Name}: ${Price}"metodu ekleyin.ElectronicProduct.cs:ElectronicProductad alanındaInventorysınıfından miras alan birProductsınıfı tanımlayın. Bu sınıf birWarrantyMonthsö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çinbasekullanın. ÖnceGetInfo()kullanarak üst sınıfınGetInfo()metodunu çağıran, ardından çıktıyı genişletmek için sonunabaseekleyen bir" (Warranty: {WarrantyMonths} months)"metodu oluşturun.Program.cs: Ana dosyanızda, girdi değerlerini kullanarak birElectronicProductoluşturun veGetInfo()ç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
}
}
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
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci KayıtlarıKendi başına pratik yap: Online C# derleyicisi