Sobes.tech
Junior

Bir metodun (overriding) yeniden tanımlanması ne zaman olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Yöntem geçersiz kılma (overriding), kalıtım hiyerarşisinde, alt sınıfın, ana sınıfta zaten tanımlanmış ve aynı isim, imza (parametre sayısı ve tipiyle uyumlu) ve dönüş tipi (veya dönüş tipi nesnesinin kovaryant tipi) ile tanımlanmış bir yöntemin kendi uygulamasını sağladığı durumdur.

Ana özellikler:

  • Kalıtım: Geçersiz kılma yalnızca kalıtım bağlamında mümkündür (ana ve alt sınıflar).
  • İmza: Alt sınıftaki yöntem, ana sınıftaki yöntemle aynı imzaya (isim, parametre sayısı ve tipi) ve aynı dönüş tipine (veya onun kovaryant alt tipi) sahip olmalıdır.
  • Erişilebilirlik: Geçersiz kılınan yöntem, alt sınıf tarafından erişilebilir olmalıdır (genellikle public, protected).
  • Polimorfizm: Geçersiz kılma, çalışma zamanında polimorfizmin temelidir ve alt sınıf nesnelerinin, ana sınıfa referans verilmiş olsa bile, yöntemi kendi tarzında yanıtlamasına olanak tanır.

Örnek (Java):

// Ana sınıf
class Animal {
    // Geçersiz kılınacak yöntem
    public void makeSound() {
        System.out.println("Hayvan ses çıkarır");
    }
}

// Alt sınıf
class Dog extends Animal {
    // makeSound() yönteminin geçersiz kılınması
    @Override // @Override anotasyonu isteğe bağlıdır, ancak önerilir
    public void makeSound() {
        System.out.println("Köpek havlar");
    }
}

Kullanım örneği:

// Bir Dog nesnesi oluşturuyoruz
Animal myDog = new Dog();
// Yöntemi çağırıyoruz. Dog'daki geçersiz kılınmış sürüm çağrılır
myDog.makeSound(); // Çıktı: Köpek havlar

// Bir Animal nesnesi oluşturuyoruz
Animal someAnimal = new Animal();
// Yöntemi çağırıyoruz. Animal'daki sürüm çağrılır
someAnimal.makeSound(); // Çıktı: Hayvan ses çıkarır