CodeBlanks Logo Icon CodeBlanks

abstract method

PHP kursu · Orta seviye · Ders 54/115

abstract method ile gövdesiz method bildirimi ve alt sınıfta uygulamayı öğrenirsin.

abstract method: gövdesiz bildirim

Bir soyut sınıf, alt sınıfların kendine göre doldurması gereken metotlar bildirebilir. Buna abstract method denir. Gövdesi yoktur; yalnızca imza (method signature) yazılır ve noktalı virgülle biter.

Tanım şöyledir: abstract public function area(): float;. Dikkat: { } yok, gövde yok; imzanın sonunda ; var. Alt sınıf bu metodu kendi gövdesiyle uygulamak (concrete implementation) zorundadır.

Bu, ebeveyne 'her şekil bir alan hesaplar ama nasıl olduğunu sen bil' diyebilmenin yoludur. Sözleşmeyi ebeveyn koyar, uygulamayı çocuk yapar.

Abstract metot ve somut uygulama

Bir abstract metot tanımlamak için abstract anahtar kelimesini metodun başına yazarsın: abstract public function area(): float;. Gövde yerine sadece imza ve ; vardır.

Alt sınıf bu metodu aynı imzayla uygulamak zorundadır. İşte örnek:

abstract class Shape {
    abstract public function area(): float;
}
class Circle extends Shape {
    public function area(): float {
        return 3.14;
    }
}
$c = new Circle();
echo $c->area();

Circle abstract metodu uygulamazsa PHP hata verir. Uyguladığında $c->area() çağrısı 3.14 döndürür.

Uygulama Abstract metot: alt sınıfta uygula

Bir Shape soyut sınıfı tanımla. İçinde abstract public function area(): float; bildir (gövde yok, noktalı virgül). Ayrıca public function describe(): string metodu olsun ve return "Alan: " . $this->area(); döndürsün. Sonra Circle sınıfını Shape'ten türet ve area() metodunu return 3.14; ile uygula. $c = new Circle() ve echo $c->describe() . "\n".

Örnek çözümü göster
float; yaz. describe() içinde $this->area() çağır. Circle'da area() metodunu return 3.14; ile uygula.
Örnek çözüm:
<?php
// Shape soyut sınıfını tanımla, area() metodunu bildir
abstract class Shape {
    abstract public function area(): float;

    public function describe(): string {
        return "Alan: " . $this->area();
    }
}

class Circle extends Shape {
    public function area(): float {
        return 3.14;
    }
}

$c = new Circle();
echo $c->describe() . "\n";

Kendini test et

  1. Hangisi geçerli bir abstract method bildirimidir?

    • abstract public function area(): float { return 0; }
    • public abstract function area(): float = 0;
    • abstract public function area(): float;
    • function area(): float abstract;
    Cevabı göster

    abstract public function area(): float; — Doğru. abstract public function area(): float; gövdesiz ve noktalı virgülle biten doğru bildirimdir.

  2. Abstract metot bildirimi

    abstract class Shape {
        ____
    }
    Cevabı göster
    abstract class Shape {
        abstract public function area(): float;
    }
  3. Abstract method kavramlarını eşleştir

    abstract method
    Gövdesiz imza
    method signature
    Parametre ve dönüş tipi
    concrete implementation
    Alt sınıfta gövde
    noktalı virgül
    İmzayı bitirir

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