PHP
extends ile miras alma
extends anahtar kelimesiyle bir sınıftan miras almayı öğrenirsin.
extends ile miras alma
Bir sınıfın tüm özelliklerini (property ve method) başka bir sınıfa aktarmaya miras alma (inheritance) denir. Mevcut sınıfa ebeveyn (parent), yeni sınıfa çocuk (child) denir.
PHP'de miras almak için extends anahtar kelimesi kullanılır. Çocuk sınıf, ebeveynin tüm public ve protected üyelerine doğrudan erişebilir. Bu sayede kod tekrarından kaçınır ve var olan sınıflar üzerine yeni davranışlar ekleyebilirsin.
Örneğin Animal sınıfından Dog sınıfı türetmek için class Dog extends Animal yazarsın.
Miras alma örneği
Miras almayı somut bir örnekle görelim. Bir Vehicle (araç) sınıfı, tüm araçlarda ortak olan brand property'sini ve describe() metodunu tutsun.
Car (otomobil) sınıfı, Vehicle'dan miras aldığında brand ve describe()'ı yeniden yazmaz; doğrudan kullanır. Üstüne kendi metodunu (ör. honk()) ekler.
Böylece hem describe() hem honk() çağrılabilir. Bu, "is-a" ilişkisidir: bir Car bir Vehicle'dır.
Uygulama Car sınıfını Vehicle'dan miras al
Bu derste Vehicle sınıfı hazır geliyor. Sen, Car sınıfını extends ile Vehicle'dan türeteceksin. Car'ın içine honk() metodunu ekle ve "Düt!" döndürsün. Volvo marka bir Car örneği oluştur ve describe() ile honk() çıktılarını yazdır.
Örnek çözümü göster
class Car extends Vehicle { ... } ile yeni sınıfı türet. honk() metodu içinde return "Düt!"; yaz.
Örnek çözüm:
<?php
class Vehicle {
public string $brand;
public function __construct(string $brand) {
$this->brand = $brand;
}
public function describe(): string {
return "Marka: " . $this->brand;
}
}
class Car extends Vehicle {
public function honk(): string {
return "Düt!";
}
}
$car = new Car("Volvo");
echo $car->describe() . "\n";
echo $car->honk() . "\n";
Kendini test et
-
extends anahtar kelimesi ne işe yarar?
- Bir sınıfın özelliklerini kopyalar ama değiştirir
- Bir sınıfı sonlandırır ve siler
- Bir sınıfın public/protected üyelerini başka sınıfa aktarır
- Bir değişkene varsayılan değer atar
Cevabı göster
Bir sınıfın public/protected üyelerini başka sınıfa aktarır — Doğru; extends ebeveynin public/protected üyelerini çocuğa aktarır.
-
extends kalıbını tamamla
class Dog ____ Animal {
public function bark(): string {
return "Hav!";
}
}
Cevabı göster
class Dog extends Animal {
public function bark(): string {
return "Hav!";
}
}
-
Kavramları açıklamalarıyla eşleştir
- Ebeveyn sınıf
- Miras alınan sınıf
- Çocuk sınıf
- Miras alan sınıf
- extends
- Miras alma anahtar kelimesi
- is-a ilişkisi
- Çocuk bir ebeveyndir
Sıradaki ders: parent:: ile ebeveyne erişim