PHP
Method override
Çocuk sınıfta ebeveyn methodunu geçersiz kılmayı (override) öğrenirsin.
Method override ne demek?
Çocuk sınıf, ebeveyn sınıfta tanımlı bir metodu aynı isimle yeniden tanımlayabilir. Buna method override (geçersiz kılma) denir.
Override yaptığında, çocuk sınıfın örneğinde metodun çocuk sürümü çağrılır. Ebeveynin sürümü kaybolmaz ama doğrudan kullanılmaz. Bu, "aynı arayüz, farklı davranış" imkanı verir.
Örneğin Vehicle::describe() "Araç: ..." döndürürken, Car::describe() aynı metodun çıktısını değiştirebilir. Çocuk istediği gibi davranışı özelleştirir.
Override + parent:: birlikte
Override yaparken ebeveynin metodunu tamamen yok saymak zorunda değilsin. parent::method() ile ebeveynin sürümünü çağırıp sonucu genişletebilirsin.
Örneğin Car::describe() içinde return parent::describe() . " (4 tekerlek)"; yazarsan, hem ebeveynin mantığını kullanır hem de ek bilgi eklersin. Bu, genişletme desenidir ve override'ın en yaygın kullanımıdır.
Ortak mantığı ebeveyne bırakıp çocuk yalnızca farkı ekler; böylece kod tekrarı önlenir.
Uygulama Car, describe metodunu override etsin
Bu derste Vehicle sınıfının describe() metodu "Araç: " + brand döndürüyor. Sen, Car sınıfını Vehicle'dan türet ve describe() metodunu override et. Override ettiğin metodun içinde parent::describe() çağırıp sonuna " (4 tekerlek)" ekle. Volvo marka bir Car örneği yapıp describe() çıktısını yazdır.
Örnek çözümü göster
:describe() çağrısının sonuna " (4 tekerlek)" ekle.
Örnek çözüm:
<?php
class Vehicle {
public string $brand;
public function __construct(string $brand) {
$this->brand = $brand;
}
public function describe(): string {
return "Araç: " . $this->brand;
}
}
class Car extends Vehicle {
public function describe(): string {
return parent::describe() . " (4 tekerlek)";
}
}
$car = new Car("Volvo");
echo $car->describe();
Kendini test et
-
Aşağıdakilerden hangisi override örneğidir?
- Çocuğa yeni bir property eklemek
- Ebeveyn metodunu silmek
- Ebeveyn sınıfı kopyalamak
- Çocuk sınıfta ebeveynle aynı isimli metodu yeniden tanımlamak
Cevabı göster
Çocuk sınıfta ebeveynle aynı isimli metodu yeniden tanımlamak — Doğru; override çocukta ebeveyn metodu aynı isimle yeniden tanımlamaktır.
-
Override ve parent:: çağrısını tamamla
public function describe(): string {
return parent::____() . " (4 tekerlek)";
}
Cevabı göster
public function describe(): string {
return parent::describe() . " (4 tekerlek)";
}
-
Override ile ilgili kavramları eşleştir
- Method override
- Aynı isimle yeniden tanımlama
- parent::method()
- Ebeveyn metodunu çağırma
- Genişletme deseni
- parent sonucuna ekleme yapma
- Çocuk sürümü çağrılır
- Override edilen metotta
Sıradaki ders: protected property ve method