Geçersiz kılma kuralları
- Java kursu
- Orta seviye
- Ders 61/116
- 5 dk
@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
// 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
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
class Dog extends Animal {
____
String sound() { return "Hav"; }
}
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 |