Nesne Yönelimli Programlamada Metot Ezme: Overriding Detaylı İnceleme

Bu yazıda Java overriding konusunu detaylı şekilde ele alacağız. Metot geçersiz kılma (override) nedir, nasıl çalışır, kuralları nelerdir ve Java overriding örnekleri ile nasıl uygulanır inceleyeceğiz.

Kısa özet: Overriding, alt sınıfın üst sınıftaki metodu kendi ihtiyacına göre yeniden yazmasıdır ve runtime polymorphism sağlar.

Overriding Nedir?

Overriding, bir üst sınıfta (superclass) tanımlanan metodun, alt sınıfta (subclass) aynı imza ile yeniden tanımlanmasıdır.

Bu sayede alt sınıf, üst sınıftan gelen davranışı özelleştirebilir. Bu durum polimorfizm (çok biçimlilik) kavramının temelidir.

Java Overriding Örneği

public class Hayvan {
    public void sesCikar() {
        System.out.println("Hayvan sesi çıkarıyor.");
    }
}

class Kedi extends Hayvan {
    @Override
    public void sesCikar() {
        System.out.println("Miyav!");
    }
}

class Kopek extends Hayvan {
    @Override
    public void sesCikar() {
        System.out.println("Hav!");
    }
}

Bu örnekte her sınıf kendi davranışını tanımlar. Aynı metot çağrısı farklı sonuçlar üretir.

Polimorfizm ile Overriding

Hayvan hayvan1 = new Kedi();
Hayvan hayvan2 = new Kopek();

hayvan1.sesCikar(); // Miyav
hayvan2.sesCikar(); // Hav

Burada hangi metodun çalışacağı runtime sırasında belirlenir.

Overriding Kuralları

  • Metot adı ve parametreler aynı olmalıdır
  • Dönüş tipi aynı veya alt tür olmalıdır
  • Access modifier daha dar olamaz
  • final metot override edilemez
  • static metot override edilemez
  • private metot miras alınmaz (override edilemez)
Önemli: Parametre değişirse overriding değil, overloading olur.

super Anahtar Kelimesi Kullanımı

Alt sınıfta, üst sınıf metoduna erişmek için super kullanılır.

class Hayvan {
    public void yemek() {
        System.out.println("Hayvan yemek yer.");
    }
}

class At extends Hayvan {
    @Override
    public void yemek() {
        super.yemek();
        System.out.println("At ot yer.");
    }
}

Hatalı Overriding Örnekleri

class Ust {
    protected void yemek() { }
}

class Alt extends Ust {
    // private void yemek() { } // HATA (daha dar erişim)
}
class A {
    public String bilgi() { return "A"; }
}

class B extends A {
    // public int bilgi() { return 1; } // HATA (dönüş tipi uyumsuz)
}

Overriding vs Overloading

  • Overriding → Runtime çalışır
  • Overloading → Compile-time çalışır
  • Overriding → Aynı imza
  • Overloading → Farklı parametre

Sonuç

Java overriding, nesne yönelimli programlamada esneklik sağlayan güçlü bir mekanizmadır. Polimorfizm ile birlikte kullanıldığında, daha temiz ve sürdürülebilir kod yazmanı sağlar.

Etiketler: java overriding, method overriding, java polymorphism, oop

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *