CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

Main.java
// 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

Main.java
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

Soru
class Cat extends Animal {
    ____
    void sound() {
        System.out.println("Miyav");
    }
}
Cevap
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

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