PHP
implements ile uygulama
implements ile bir interface'in methodlarını sınıfta uygulamayı öğrenirsin.
implements anahtar kelimesi
Bir sınıfın bir interface'i uyguladığını bildirmek için implements anahtar kelimesi kullanılır: class Circle implements Shape { ... }.
Sınıf, interface'te tanımlı tüm methodları aynı imzayla yazmak zorundadır. Eksik method olursa PHP fatal error fırlatır.
Böylece sınıf, interface'in sözleşmesine bağlı kalmış olur. Dışarıdan bakıldığında Circle bir Shape'tir ve Shape beklenen her yerde kullanılabilir.
method uygulama örneği
Shape interface'ini uygulayan bir Circle sınıfı yazalım. Önce interface: interface Shape { public function area(): float; }.
Sonra sınıf: class Circle implements Shape { public function area(): float { return 3.14 * $this->radius * $this->radius; } }. Sınıf artık area() methodunu kendi gövdesiyle tanımlar.
Dışarıdan $circle = new Circle() dersen ve $circle->area() çağırırsan, Circle'ın kendi gövdesi çalışır. Sözleşme yerine gelmiştir.
Uygulama Circle sınıfı Shape interface'ini uygular
Önce interface Shape { public function area(): float; } tanımla. Sonra class Circle implements Shape yaz; private float $radius property'si ve __construct(float $radius) yapıcı metodu olsun, yapıcı $this->radius = $radius atasın. area() methodu return 3.14 * $this->radius * $this->radius döndürsün. Sonra $circle = new Circle(5) oluştur ve echo $circle->area() . "\n" yazdır.
Örnek çözümü göster
float; } yaz. Sonra class Circle implements Shape içine private float $radius, __construct ve area methodunu tanımla.
Örnek çözüm:
<?php
// Shape interface'ini tanımla ve Circle sınıfı uygula
interface Shape {
public function area(): float;
}
class Circle implements Shape {
private float $radius;
public function __construct(float $radius) {
$this->radius = $radius;
}
public function area(): float {
return 3.14 * $this->radius * $this->radius;
}
}
$circle = new Circle(5);
echo $circle->area() . "\n";
Kendini test et
-
implements derken ne zorunludur?
- interface'in tüm methodlarını aynı imzayla yazmak
- interface'in yalnızca bir methodunu yazmak
- methodları private yapmak
- interface'e property eklemek
Cevabı göster
interface'in tüm methodlarını aynı imzayla yazmak — Doğru. implements dendiğinde interface'in tüm methodları aynı imzayla yazılmalıdır.
-
implements kelimesini ekle
class Circle ____ Shape {
public function area(): float { return 3.14; }
}
Cevabı göster
class Circle implements Shape {
public function area(): float { return 3.14; }
}
-
implements ile ilgili ifadeleri eşleştir
- implements Shape
- Sınıf sözleşmeyi kabul eder
- area() methodu
- Sınıfta gövdesiyle yazılır
- eksik method
- Fatal error verir
- interface Shape
- Sözleşme tanımı
-
interface'in methodlarını yazmazsan ne olur?
- Uyarı (warning) verilir, kod çalışır
- Fatal error verilir, sınıf kullanılamaz
- Methodlar otomatik boş gövdeyle oluşur
- Hiçbir şey olmaz, göz ardı edilir
Cevabı göster
Fatal error verilir, sınıf kullanılamaz — Doğru. implements dendiğinde tüm methodlar yazılmalıdır; eksik method fatal error verir.
Sıradaki ders: Çoklu interface