CodeBlanks Logo Icon CodeBlanks

extends ile miras alma

PHP kursu · Orta seviye · Ders 13/115

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

  1. 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.

  2. 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!";
        }
    }
  3. 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

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