Metot geçersiz kılma
- Java kursu
- Orta seviye
- Ders 15/116
- 4 dk
Türetilmiş sınıfta metodu geçersiz kılmayı öğrenirsin.
Metot geçersiz kılma
Alt sınıf, üst sınıftaki bir metodu yeniden tanımlayabilir; buna geçersiz kılma (override) denir. Metot imzası aynı olmalıdır: aynı isim, aynı parametre listesi. @Override annotation'ı bunu açıkça belirtmek için kullanılır.
Örnek: class Animal { void sound() { System.out.println("Ses"); } } class Cat extends Animal { @Override void sound() { System.out.println("Miyav"); } }. Burada Cat, sound metodunu geçersiz kılar. Cat örneğinde sound() çağrıldığında "Miyav" yazdırılır. @Override annotation'ı yanlış imza yazılırsa derleme hatası verir; güvenlik sağlar.
@Override neden kullanılır?
@Override annotation'ı derleyiciye bu metodun üst sınıftaki bir metodu geçersiz kıldığını söyler. Yanlış imza yazarsan derleme hatası alırsın. Bu, sessiz hataları önler; yazım hatası yapsan bile derleme aşamasında yakalanır.
Örnek: sound() yerine yanlışlıkla soudn() yazarsan, @Override olmadan bu yeni bir metot olur ve üst sınıfın metodu gizlice kalır. @Override varsa derleyici Animal'da soudn metodu bulamaz ve hata verir. Bu yüzden override yaparken her zaman @Override kullanmak iyi bir alışkanlıktır.
Uygulama Cat sınıfında sound metodunu geçersiz kıl
Animal adında bir sınıf tanımla; void sound() metodu gövdesinde System.out.println("Ses"); yazsın. Cat extends Animal tanımla; @Override ile sound metodunu geçersiz kıl, gövdede System.out.println("Miyav"); yaz. Cat içine main koy; bir Cat örneği oluştur ve sound metodunu çağır.
Başlangıç kodu
// Animal sınıfını tanımla
// Cat'te sound metodunu geçersiz kıl
// main içinde örnekle ve çağırÖrnek çözüm
class Animal {
void sound() {
System.out.println("Ses");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Miyav");
}
public static void main(String[] args) {
Cat c = new Cat();
c.sound();
}
}Beklenen çıktı
Miyav
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Override için hangisi doğrudur?
- Metot imzası aynı olmalı Doğru cevap
- Metot imzası farklı olmalı
- Metot ismi değişmeli
- Parametre sayısı artmalı
Açıklama: Override'da metot imzası aynı olmalıdır.
2 @Override annotation ekle
class Cat extends Animal {
____
void sound() {
System.out.println("Miyav");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Miyav");
}
}
Açıklama: @Override annotation'ı geçersiz kılmayı belirtir.
3 Override bölümlerini eşle
| Kavram | Anlamı |
|---|---|
@Override |
Annotation |
sound |
Metot ismi |
Miyav |
Yeni çıktı |
Cat extends Animal |
Miras ilişkisi |