Java
Metot geçersiz kılma
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.
Örnek çözümü göster
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();
}
}
Kendini test et
-
Override için hangisi doğrudur?
- Metot imzası aynı olmalı
- Metot imzası farklı olmalı
- Metot ismi değişmeli
- Parametre sayısı artmalı
Cevabı göster
Metot imzası aynı olmalı — Override'da metot imzası aynı olmalıdır.
-
@Override annotation ekle
class Cat extends Animal {
____
void sound() {
System.out.println("Miyav");
}
}
Cevabı göster
class Cat extends Animal {
@Override
void sound() {
System.out.println("Miyav");
}
}
-
Override bölümlerini eşle
- @Override
- Annotation
- sound
- Metot ismi
- Miyav
- Yeni çıktı
- Cat extends Animal
- Miras ilişkisi
Sıradaki ders: Object sınıfı