Dziedziczenie w php z interfejsem

Dzięki dziedziczeniu możemy stworzyć ramy klasy głownej, które będą wykorzystywane przez klasy dziedziczące. W tym przykładzie możemy stworzyć klasę główną Wielokat, która będzie definiować szerokość i wysokość figur, a także wyświetlać te dane. W klasach dziedziczących dodamy funkcje pole, które będą się różnić w zależności od figury.

class Wielokat{
    private $szerokosc;
    private $wysokosc;
    function __construct(float $sz, float $w){
        $this->szerokosc = $sz;
        $this->wysokosc = $w;
    }
    public function pobierzSzerokosc(){
        return $this->szerokosc;
    }
    public function pobierzWysokosc(){
        return $this->wysokosc;
    }
}

class Prostokat extends Wielokat{
    public function pole(){
        return $this->pobierzSzerokosc() * $this->pobierzWysokosc(); 
    }
}

class Trojkat extends Wielokat{
    public function pole(){
        return $this->pobierzSzerokosc() * $this->pobierzWysokosc() / 2; 
    }
}

$fig = new Prostokat(4,6);
echo $fig->pole();

$troj = new Trojkat(6,4);
echo $troj->pole();

Jeżeli chcemy mieć pewność, że wszystkie klasy będą zawierać metodę pole, możemy zaimplementować interfejs. Wewnątrz interfejsu podaje się tylko deklarację funkcji, a następnie dodaje się odpowiednią instrukcję implements do każdej klasy, np:

class Wielokat{
    private $szerokosc;
    private $wysokosc;
    function __construct(float $sz, float $w){
        $this->szerokosc = $sz;
        $this->wysokosc = $w;
    }
    public function pobierzSzerokosc(){
        return $this->szerokosc;
    }
    public function pobierzWysokosc(){
        return $this->wysokosc;
    }
}
interface IKsztalt{
    public function pole();
}

class Prostokat extends Wielokat implements IKsztalt{
    public function pole(){
        return $this->pobierzSzerokosc() * $this->pobierzWysokosc(); 
    }
}

class Trojkat extends Wielokat implements IKsztalt{
    public function pole(){
        return $this->pobierzSzerokosc() * $this->pobierzWysokosc() / 2; 
    }
}

$fig = new Prostokat(4,6);
echo $fig->pole();

$troj = new Trojkat(6,4);
echo $troj->pole();
Ask ChatGPT
Set ChatGPT API key
Find your Secret API key in your ChatGPT User settings and paste it here to connect ChatGPT with your Tutor LMS website.
Scroll to Top