Menu
Coddy logo textTech

parent:: Anahtar Sözcüğü

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 22 / 91.

Bir alt sınıf bir üst sınıftan miras aldığında, bazen üst sınıfın yöntemlerine veya özelliklerine doğrudan erişmeniz gerekir. parent:: anahtar sözcüğü, alt sınıfın içinden üst sınıfın uygulamasını çağırmanıza olanak tanır.

Bu, özellikle alt sınıfın kendi özelliklerini ayarlarken üst sınıfın özelliklerini başlatması gerektiğinde kurucularda kullanışlıdır:

<?php
class Animal {
    public $name;
    
    public function __construct($name) {
        $this->name = $name;
    }
}

class Dog extends Animal {
    public $breed;
    
    public function __construct($name, $breed) {
        parent::__construct($name);
        $this->breed = $breed;
    }
    
    public function describe() {
        return "$this->name is a $this->breed";
    }
}

$dog = new Dog("Max", "Labrador");
echo $dog->describe();

Çıktı:

Max is a Labrador

parent::__construct($name) çağrılarak alt sınıf, başlatma mantığını yeniden yazmak yerine üst sınıfın başlatma mantığını yeniden kullanır. Bu çağrı olmadan $name özelliği hiçbir zaman ayarlanmaz.

Yalnızca kurucuları değil, herhangi bir üst sınıf methodunu çağırmak için parent:: kullanabilirsin. Bu, bir methodun davranışını tamamen değiştirmek yerine genişletmek istediğinde özellikle önem kazanır.

Temel Nokta: parent:: anahtar sözcüğü, üst sınıfın uygulamasına erişmenin bir yolunu sağlar. Uygun kurucu zincirlemesi ve devralınan işlevselliği yeniden yazmak yerine onun üzerine inşa etmek için gereklidir.

challenge icon

Görev

Kolay

parent:: anahtar sözcüğünü kullanarak alt sınıfların üst sınıf işlevlerini nasıl genişletebileceğini, kurucuları düzgün şekilde zincirleyip devralınan metotların üzerine nasıl ekleme yapılacağını gösteren bir ürün kataloğu sistemi oluşturalım.

Kodunuzu üç dosyaya ayıracaksınız:

  • Product.php: Tüm ürünlerin temelini oluşturan bir Product sınıfı tanımlayın. Bu sınıfın $name ve $price adlı herkese açık özellikleri olmalıdır. Kurucu, bir ad ve fiyat kabul ederek her iki özelliği ayarlamalıdır. "[name]: $[price]" değerini döndüren bir getDetails() metodu ekleyin.
  • ElectronicProduct.php: Product sınıfını genişleten bir ElectronicProduct sınıfı tanımlayın. En üstte Product dosyasını dahil edin. Bu sınıf, bir $warranty özelliği (ay cinsinden) ekler. Kurucu ad, fiyat ve garanti süresini kabul etmelidir: adı ve fiyatı üst sınıf üzerinden başlatmak için parent::__construct() kullanın, ardından garanti süresini kendiniz ayarlayın. Üst sınıfın uygulamasını temel alan bir getDetails() metodu oluşturun: parent::getDetails() çağrısını yapın ve sonuna " (Warranty: [warranty] months)" ekleyin.
  • main.php: ElectronicProduct dosyasını dahil edin. Üç girdi alacaksınız: ürün adı, fiyata dönüştürülecek bir dize olarak fiyat ve tam sayıya dönüştürülecek bir dize olarak garanti süresi. Bu değerlerle bir ElectronicProduct oluşturun ve getDetails() çağrısının sonucunu yazdırın.

Bu alıştırma, parent:: anahtar sözcüğünün gerçek gücünü gösterir. Yalnızca kurucu zincirleme işlemi için değil, aynı zamanda metot davranışını genişletmek için de kullanılır. ElectronicProduct, üst sınıfın biçimlendirme mantığını yeniden kullanır ve üzerine kendi ayrıntılarını ekler; böylece kod tekrarından kaçınırken daha zengin bir çıktı oluşturur.

Kendin dene

<?php
require_once 'ElectronicProduct.php';

// Girdileri oku
$name = trim(fgets(STDIN));
$price = floatval(trim(fgets(STDIN)));
$warranty = intval(trim(fgets(STDIN)));

// TODO: Girdi değerleriyle bir ElectronicProduct oluştur
// ve getDetails() çağrısının sonucunu yazdır

?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi