CodeBlanks Logo Icon CodeBlanks

Geçersiz kılma kuralları

@Override ve kural setini öğrenirsin.

Override ve @Override

Bir metodu geçersiz kıldığında @Override annotation'ını eklemek iyi bir alışkanlıktır. Derleyiciye "bu metodu override etmeye çalışıyorum" demiş olursun. Eğer imzada bir yazım yanlışı varsa derleme hatası alırsın; bu, sessiz hataları önler.

Override ile aşırı yükleme (overload) karıştırma. Overload, aynı isimde farklı parametre imzasına sahip yeni metot tanımlamaktır; dinamik bağlamaya girmez. Override ise üst sınıftaki metodu değiştirir.

super ile üst metodu çağırma

Bazen override ettiğin metodun üst sınıftaki halini de çağırmak istersin. super.metot() bunu sağlar. Örneğin super.area() üst sınıfın area metodunu çalıştırır; sonucu alt sınıf metodu içinde kullanabilirsin.

Bu özellik özellikle şablon metot deseninde yararlıdır: üst sınıf bir algoritma iskeleti sunar, alt sınıflar bazı adımları özelleştirirken super ile iskeleti korur.

Uygulama Override + super ile alan hesapla

class Animal tanımla; String sound() { return ""; } metodu olsun. class Dog extends Animal tanımla; sound metodunu @Override ile override et ve return super.sound() + "Hav"; döndür. main içinde Animal a = new Dog(); ile ata ve System.out.println(a.sound()); ile yazdır.

Başlangıç kodu

Main.java
// Animal sınıfını tanımla: sound boş dize döner

// Dog sınıfı Animal'ı miras alır; sound metodu override edilir

// main: bir Dog örneğini Animal olarak ata ve yazdır

Örnek çözüm

Main.java
class Animal {
    String sound() { return ""; }
}

class Dog extends Animal {
    @Override
    String sound() { return super.sound() + "Hav"; }
}

public class Main {
    public static void main(String[] args) {
        Animal a = new Dog();
        System.out.println(a.sound());
    }
}

Beklenen çıktı

Hav

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aşağıdaki durumlardan hangisi override değildir?

  • @Override ile işaretlenmiş aynı imzalı alt sınıf metodu
  • Üst sınıf protected metodunun public yapılması
  • Aynı adda ama farklı parametrelerle yeni metot Doğru cevap
  • Soyut bir metodun somut alt sınıfta yazılması

Açıklama: Aynı adda farklı parametreler overload'tür; override değildir.

2 Override annotation'ını ekle

Soru
class Dog extends Animal {
    ____
    String sound() { return "Hav"; }
}
Cevap
class Dog extends Animal {
    @Override
    String sound() { return "Hav"; }
}

Açıklama: @Override derleyiciye bu metodun override olduğunu söyler.

3 Override ve overload kavramlarını eşleştir

Kavram Anlamı
@Override Override niyetini işaretler
overload Aynı ad farklı parametre
super.metot() Üst sınıf metodunu çağırır
final Override'i engeller

Orta seviye bölümündeki tüm dersler