CodeBlanks Logo Icon CodeBlanks

abstract class tanımlama

PHP kursu · Orta seviye · Ders 53/115

abstract class ile tamamlanmamış sınıf şablonu tanımlamayı öğrenirsin.

abstract class ile şablon sınıf

Bazen bir sınıfın başlangıç şablonu olmasını ama tek başına kullanılmasını istemezsin. Örneğin tüm şekiller bir alan hesaplar; ama genel bir 'şekil' tek başına anlamlı değildir.

PHP'de bunun için abstract class kullanırsın. Tanımı abstract class Shape biçimindedir. Soyut bir sınıf new ile örneklenemez; yalnızca alt sınıfların miras alması için iskelet sunar.

İçinde normal property ve metotlar bulunabilir. Yani soyut sınıf, tamamlanmamış bir taslaktır; somut (concrete) sınıflar onu tamamlar.

Soyut sınıf tanımı ve örnek

Bir soyut sınıf tanımlamak için abstract anahtar kelimesini class önüne yazarsın: abstract class Shape. İçine normal metot ve property ekleyebilirsin; bunlar alt sınıfa aynen geçer.

Aşağıda Shape soyut sınıfının describe() metodu normal bir metottur. Circle sınıfı bunu miras alır ve kullanır:

abstract class Shape {
    public function describe(): string {
        return "Bir şekil";
    }
}
class Circle extends Shape {}
$c = new Circle();
echo $c->describe();

Dikkat: new Shape() yazarsan PHP hata verir; ama new Circle() geçerlidir.

Uygulama Soyut sınıf ve somut alt sınıf

Bir Shape soyut sınıfı tanımla. İçinde public function describe(): string metodu olsun ve return "Bir şekil"; döndürsün. Sonra Circle sınıfını Shape'ten extends ile türet (boş gövde yeterli). $c = new Circle() ile örnek oluştur ve echo $c->describe() . "\n" ile çıktı yazdır.

Örnek çözümü göster
abstract class Shape { ... } yaz, içine describe() metodu koy. Circle sınıfını extends Shape ile türet. Örneği new Circle() ile oluştur.
Örnek çözüm:
<?php
// Shape soyut sınıfını tanımla
abstract class Shape {
    public function describe(): string {
        return "Bir şekil";
    }
}

class Circle extends Shape {
}

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

Kendini test et

  1. Soyut sınıfla ilgili hangisi doğrudur?

    • new ile doğrudan örneklenir
    • Yalnızca alt sınıflar için şablon olur ve new ile örneklenemez
    • Sadece statik metot içerebilir
    • İçinde property bulunamaz
    Cevabı göster

    Yalnızca alt sınıflar için şablon olur ve new ile örneklenemez — Doğru. Soyut sınıf şablondur; new ile örneklenemez, yalnızca extends ile miras alınır.

  2. Soyut sınıf tanımı

    ____ Shape {
        public function describe(): string {
            return "Bir şekil";
        }
    }
    Cevabı göster
    abstract class Shape {
        public function describe(): string {
            return "Bir şekil";
        }
    }
  3. Soyut sınıf kavramlarını eşleştir

    abstract class
    Şablon sınıf
    new Shape()
    Hata verir
    extends Shape
    Alt sınıf tanımı
    İçinde normal metot
    Bulunabilir

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