Witam, staram się zrozumieć o czym konkretnie mówi zasada Liskov.
"Funkcje, które używają wskaźników lub referencji do klas bazowych, muszą być w stanie używać również obiektów klas dziedziczących po klasach bazowych, bez dokładnej znajomości tych obiektów".
Pytanie tylko jak się do tego ma przeciążanie metod? Czy aby nie łamać tej zasady zawsze musimy uruchamiać metodę rozdzica? parent::method()?
<?php
abstract class Car
{
public function ride()
{
echo "riding\n";
}
}
class NormalCar extends Car
{
public function refuel()
{
echo "goolp goolp\n";
}
}
class ElectricCar extends Car
{
public function load()
{
echo "battery loading\n";
}
}
class Bmw extends NormalCar
{
}
class Tesla extends ElectricCar
{
public function ride ()
{
echo "no engine sound\n";
parent::ride();
}
}
$car1 = new Bmw();
$car1 -> ride();
$car1 -> refuel();
$tcar = new Tesla();
$tcar -> ride();
$tcar -> load();