Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

Tü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: Vehicle ad alanında bir Transport sınıfı tanımlayın. Bu, tüm araçların paylaşacağı temel sınıfınız olacak. Bir Brand özelliğine (string) ve bir Year özelliğine (int) sahip olmalı; ayrıca StartEngine() yazdıran "{Brand} engine started." metodunu içermelidir.
  • Car.cs: Car ad alanında Transport sınıfından kalıtım alan bir Vehicle sınıfı tanımlayın. Araba, kendi NumberOfDoors (int) özelliğini ve Honk() yazdıran "{Brand} goes Beep Beep!" metodunu ekler.
  • Program.cs: Ana dosyanızda, girdi değerlerini kullanarak bir Car örneği oluşturun. Özelliklerini (kalıtımla alınanlar da dahil) ayarlayın, ardından arabanın hem kendi metotlarını hem de Vehicle sı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
    }
}
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