Typowanie polimorficzne z interfejsami
Założenie: Pokażemy, jak używać interfejsów w PHP do osiągnięcia polimorfizmu, czyli możliwości traktowania obiektów różnych klas w jednolity sposób.
Krok po kroku:
- Definicja interfejsu: Zdefiniujmy interfejs
Shape
z metodągetArea()
, która będzie zwracać pole powierzchni figury. - Implementacja interfejsu w klasach: Stwórzmy dwie klasy:
Circle
iRectangle
, które będą implementować interfejsShape
. - Użycie interfejsu jako typu zmiennej: Zadeklarujmy zmienną typu
Shape
i przypiszmy do niej obiekty klasCircle
iRectangle
. - Wyjaśnienie: Kod działa poprawnie, ponieważ obie klasy implementują interfejs
Shape
i definiują metodęgetArea()
. Zmienna$shape
może przechowywać obiekty różnych klas, o ile implementują one ten sam interfejs.
interface Shape {
public function getArea(): float;
}
class Circle implements Shape {
private float $radius;
public function __construct(float $radius) { $this->radius = $radius; }
public function getArea(): float { return pi() * $this->radius * $this->radius; }
}
class Rectangle implements Shape {
private float $width;
private float $height;
public function __construct(float $width, float $height) { $this->width = $width; $this->height = $height; }
public function getArea(): float { return $this->width * $this->height; }
}
$shape1 = new Circle(5);
$shape2 = new Rectangle(4, 6);
echo "Pole koła: " . $shape1->getArea() . "
";
echo "Pole prostokąta: " . $shape2->getArea();
Ten przykład pokazuje podstawy typowania polimorficznego z użyciem interfejsów w PHP. Zachęcamy do dalszego zgłębiania tematu programowania obiektowego!