Temel Kalıtım (:) Sözdizimi
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 19 / 70.
Kalıtım, bir sınıfın başka bir sınıfın özelliklerini ve metotlarını edinmesini sağlar. Aynı kodu tekrar yazmak yerine, paylaşılan işlevselliğe sahip bir temel sınıf (ebeveyn) oluşturursunuz, ardından ondan miras alan türetilmiş sınıflar (çocuklar) oluşturursunuz.
C#'ta, kalıtımı belirtmek için iki nokta üst üste : sembolünü kullanırsınız:
public class Animal
{
public string Name { get; set; }
public void Eat()
{
Console.WriteLine($"{Name} is eating.");
}
}
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine($"{Name} says Woof!");
}
}Dog sınıfı her şeyi Animal sınıfından miras alır. Bunları tekrar bildirmeden Name özelliğine ve Eat() metoduna erişebilir, ayrıca kendi Bark() metodunu ekler:
Dog myDog = new Dog();
myDog.Name = "Buddy";
myDog.Eat(); // Çıktı: Buddy yemek yiyor.
myDog.Bark(); // Çıktı: Buddy Hav diyor!C# yalnızca tekli kalıtımı destekler; bu, bir sınıfın yalnızca bir temel sınıftan miras alabileceği anlamına gelir. Ancak, türetilmiş bir sınıfın başka bir sınıf için temel sınıf haline geldiği kalıtım zincirleri oluşturabilirsiniz. Bu, kodunuzu düzenli ve yeniden kullanılabilir tutarken gerçek dünya ilişkilerini modelleyen bir hiyerarşi oluşturur.
Görev
KolayTüretilmiş sınıfların bir temel sınıftaki işlevleri paylaşırken kendi benzersiz davranışlarını eklemesine olanak tanıyan kalıtımı gösterecek bir araç hiyerarşisi oluşturalım.
Kodunuzu düzenlemek için üç dosya oluşturacaksınız:
Vehicle.cs:Vehiclead alanında birTransportsınıfı tanımlayın. Bu, tüm araçların paylaşacağı temel sınıfınız olacak. BirBrandözelliğine (string) ve birYearözelliğine (int) sahip olmalı; ayrıcaStartEngine()yazdıran"{Brand} engine started."metodunu içermelidir.Car.cs:Carad alanındaTransportsınıfından kalıtım alan birVehiclesınıfı tanımlayın. Araba, kendiNumberOfDoors(int) özelliğini veHonk()yazdıran"{Brand} goes Beep Beep!"metodunu ekler.Program.cs: Ana dosyanızda, girdi değerlerini kullanarak birCarörneği oluşturun. Özelliklerini (kalıtımla alınanlar da dahil) ayarlayın, ardından arabanın hem kendi metotlarını hem deVehiclesınıfından kalıtımla aldığı metotları kullanabildiğini gösterin.
Üç girdi alacaksınız:
- Marka adı
- Yıl
- Kapı sayısı
Arabanın bilgilerini yazdırın ve yeteneklerini şu biçimde gösterin:
Car: {Brand} ({Year})
Doors: {NumberOfDoors}
{StartEngine output}
{Honk output}Örneğin girdiler Toyota, 2022 ve 4 ise çıktı şu şekilde olmalıdır:
Car: Toyota (2022)
Doors: 4
Toyota engine started.
Toyota goes Beep Beep!Car sınıfınızın, Brand sınıfında tanımlanmış olmalarına rağmen StartEngine() özelliğine ve Vehicle metoduna erişebildiğine dikkat edin. İşte kalıtımın gücü budur: türetilmiş sınıf, temel sınıfındaki her şeyi otomatik olarak alır!
Kendin dene
using System;
using Transport;
class Program
{
public static void Main(string[] args)
{
// Girişi oku
string brand = Console.ReadLine();
int year = Convert.ToInt32(Console.ReadLine());
int doors = Convert.ToInt32(Console.ReadLine());
// TODO: Bir Car örneği oluşturun
// TODO: Arabanın özelliklerini ayarlayın (Brand, Year, NumberOfDoors)
// TODO: Arabanın bilgilerini istenen formatta yazdırın:
// Car: {Brand} ({Year})
// Doors: {NumberOfDoors}
// Ardından StartEngine() ve Honk() metotlarını çağı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