C# Dersleri 75 - Method Overriding (Metot Ezme)

C# Dersleri 75 - Method Overriding (Metot Ezme)


C# Method Overriding (Metot Ezme)

Method Overriding (Metot Ezme), Nesne Yönelimli Programlama’nın (OOP) en önemli özelliklerinden biridir. Bir alt sınıf, üst sınıfta tanımlanan bir metodu kendine özgü şekilde yeniden tanımlayabilir. Bu sayede, türetilmiş sınıflar kendi davranışlarını özelleştirebilir.

Method Overriding Nedir?

  • Üst sınıfta tanımlanan bir metot, alt sınıfta yeniden yazılabilir.
  • Üst sınıftaki metot virtual olarak tanımlanmalıdır.
  • Alt sınıfta metodu geçersiz kılmak (override etmek) için override anahtar kelimesi kullanılır.
  • Override edilen metot, üst sınıftakiyle aynı parametre listesine sahip olmalıdır.

Method Overriding Kullanımı

Aşağıda, Animal sınıfındaki bir metot, Dog ve Cat sınıflarında farklı şekilde ezilmektedir:

using System;

class Animal
{
    // Üst sınıftaki metot virtual olarak tanımlandı
    public virtual void MakeSound()
    {
        Console.WriteLine("Hayvan ses çıkarıyor.");
    }
}

class Dog : Animal
{
    // Metodu geçersiz kılma (override)
    public override void MakeSound()
    {
        Console.WriteLine("Köpek havlıyor: Hav hav!");
    }
}

class Cat : Animal
{
    // Metodu geçersiz kılma (override)
    public override void MakeSound()
    {
        Console.WriteLine("Kedi miyavlıyor: Miyav miyav!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal myAnimal = new Animal();
        myAnimal.MakeSound(); // Hayvan ses çıkarıyor.

        Dog myDog = new Dog();
        myDog.MakeSound(); // Köpek havlıyor: Hav hav!

        Cat myCat = new Cat();
        myCat.MakeSound(); // Kedi miyavlıyor: Miyav miyav!
    }
}

Programın Çıktısı

Hayvan ses çıkarıyor.
Köpek havlıyor: Hav hav!
Kedi miyavlıyor: Miyav miyav!

Base Anahtar Kelimesi ile Üst Sınıf Metodunu Çağırma

Eğer alt sınıf, üst sınıftaki metodu tamamen değiştirmek yerine, önce üst sınıfın metodunu çalıştırıp sonra kendi işlemini yapmak isterse, base anahtar kelimesi kullanılabilir.

class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Hayvan bir ses çıkarıyor...");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        base.MakeSound(); // Üst sınıfın metodunu çağırır
        Console.WriteLine("Köpek ayrıca havlıyor: Hav hav!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Dog myDog = new Dog();
        myDog.MakeSound();
    }
}

Programın Çıktısı

Hayvan bir ses çıkarıyor...
Köpek ayrıca havlıyor: Hav hav!

Method Overriding ile Polimorfizm

Polimorfizm sayesinde, üst sınıf referansı kullanılarak alt sınıf nesneleri çağrılabilir:

class Program
{
    static void Main(string[] args)
    {
        Animal myAnimal1 = new Dog();
        Animal myAnimal2 = new Cat();

        myAnimal1.MakeSound(); // Köpek havlıyor: Hav hav!
        myAnimal2.MakeSound(); // Kedi miyavlıyor: Miyav miyav!
    }
}

Abstract Sınıflarla Method Overriding

Eğer üst sınıfta bir metodun tüm alt sınıflar tarafından ezilmesini zorunlu kılmak istiyorsanız, metodu abstract olarak tanımlayabilirsiniz:

abstract class Animal
{
    public abstract void MakeSound(); // Abstract metot (gövdesiz)
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Köpek havlıyor: Hav hav!");
    }
}

class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Kedi miyavlıyor: Miyav miyav!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        myDog.MakeSound(); // Köpek havlıyor: Hav hav!
        myCat.MakeSound(); // Kedi miyavlıyor: Miyav miyav!
    }
}

Sonuç

Method Overriding, alt sınıfların üst sınıftaki metotları değiştirmesine olanak tanır. virtual ve override anahtar kelimeleri ile uygulanır. Ayrıca abstract metotlarla, alt sınıfların belirli metotları mutlaka ezmesini sağlayabilirsiniz. Bu yöntem, kodun esnekliğini ve yeniden kullanılabilirliğini artırır.

Bu içeriği beğendiyseniz paylaşarak destek olabilirsiniz!


Eğitim İçeriği

Eğitim C# Dersleri
Kategori Programlama Dili
Ders Adeti 80 Ders
Dil Türkçe
Güncelleme 04/2024
  • HTML Dersleri

    HTML Dersleri Sıfırdan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 19 Ders
    Dil Türkçe
    Güncelleme 12/2020
    Derse Başla
  • Java Dersleri

    Java Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 125 Ders
    Dil Türkçe
    Güncelleme 09/2020
    Derse Başla
  • CSS Dersleri

    CSS Dersleri Başlangıçtan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 49 Ders
    Dil Türkçe
    Güncelleme 10/2021
    Derse Başla
  • Java Örnek Projeler

    Java Örnek Projeler

    Kategori Programlama Dili
    Ders Süresi 20 Ders
    Dil Türkçe
    Güncelleme 10/2022
    Derse Başla
  • C# Dersleri

    C# Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 100 Ders
    Dil Türkçe
    Güncelleme 04/2024
    Derse Başla