Junior
Programlamada override (geçersiz kılma) nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Yöntem Geçersiz Kılma (Overriding), bir alt sınıfın, zaten ana sınıfında tanımlanmış bir yöntemin kendi uygulamasını sağlayabilme yeteneğidir. Geçersiz kılınan yöntemin (isim, parametre sayısı ve tipleri) imzası, alt sınıfta ana sınıfındaki yöntemle tamamen aynı olmalıdır. Dönüşüm tipi de ya aynı olmalı ya da ana sınıfın yönteminin kovaryantı (alt tipi) olmalıdır.
Geçersiz kılmanın temel yönleri:
- Miras: Geçersiz kılma, yalnızca miras ilişkileri bağlamında mümkündür; burada alt sınıf, ana sınıftan bir yöntem miras alır.
- Polimorfizm: Geçersiz kılma, çalışma zamanında (runtime polymorphism) polimorfizmin uygulanmasında kullanılan mekanizmalardan biridir. Bu, nesnenin gerçek türüne bağlı olarak, ana türe referans aracılığıyla çağrıldığında, uygun yöntem uygulamasının gerçekleştirileceği anlamına gelir (ya ana sınıfın ya da alt sınıfın yöntemi).
@Overrideanahtar kelimesi: Bazı dillerde (örneğin Java)@Overrideanotasyonu kullanılır. Bu, geçersiz kılmanın doğru çalışması için zorunlu değildir, ancak kodun okunabilirliğini artırmak ve yöntemin geçersiz kılma kurallarına uymaması durumunda derleyici hatalarını önlemek için önerilir.- Ana sınıf yöntemine erişim: Alt sınıfta geçersiz kılınan yöntem içinde, genellikle aynı yöntemin ana sınıftaki uygulamasını çağırmak gerekir. Bunun için
superanahtar kelimesi kullanılır (örneğin,super.metod()).
Java örneği:
// Ana sınıf
class Animal {
// Ana sınıftaki yöntem
void makeSound() {
System.out.println("Hayvan ses çıkarır");
}
}
// Animal'den kalıtım alan alt sınıf
class Dog extends Animal {
// makeSound() yönteminin geçersiz kılınması
@Override
void makeSound() {
System.out.println("Hav hav!");
}
// Ana sınıf yöntemini çağırma örneği
void eat() {
System.out.println("Köpek yiyor.");
super.makeSound(); // Ana sınıfın yöntemini çağırır
}
}
class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog(); // Polimorfizm
myAnimal.makeSound(); // Çıktı: Hayvan ses çıkarır
myDog.makeSound(); // Çıktı: Hav hav! (Geçersiz kılınmış yöntem çağrısı)
Dog specificDog = new Dog();
specificDog.eat(); // Çıktı: Köpek yiyor.
// Hayvan ses çıkarır
}
}
Python örneği:
# Ana sınıf
class Animal:
# Ana sınıftaki yöntem
def make_sound(self):
print("Hayvan ses çıkarır")
# Animal'den kalıtım alan alt sınıf
class Dog(Animal):
# make_sound() yönteminin geçersiz kılınması
def make_sound(self):
print("Hav hav!")
# Ana sınıf yöntemini çağırma örneği
def eat(self):
print("Köpek yiyor.")
super().make_sound() # Ana sınıfın yöntemini çağırır
# Gösterim
yeni_hayvan = Animal()
yeni_kopek = Dog() # Polimorfizm
ny_hayvan.make_sound() # Çıktı: Hayvan ses çıkarır
ny_kopek.make_sound() # Çıktı: Hav hav!
ozel_kopek = Dog()
ozel_kopek.eat() # Çıktı: Köpek yiyor.
# Hayvan ses çıkarır
Geçersiz kılma, temel sınıfın davranışını, alt sınıfın özgüllüklerine uyacak şekilde uyarlamak için kullanılır ve genel arayüz korunur. Nesne yönelimli tasarımın temel öğesidir.