Hai costruito una classe Animal abstract
con metodo run()
Poi l'hai estesa ad Horse, Bird, Fish.
Horse e senza metodo proprio ma accesso
al metodo della classe astratta.
Poi hai fatto un overridding sulla classe Fish
sempre sul metodo run() ridefinendolo.
Poi hai creato le interfacce con i loro metodi
però non ancora definiti, quindi solo dichiarati.
Poi hai costruito delle classi per ogni tipo
di animale implementando l'interfaccia per quel
tipo di animale con possibilità di definire il metodo
all'interno della classe.
Poi nella classe chimera hai implementato le
interfacce ridefinendo all'interno ogni loro metodo,
ma mancando di un metodo swim() che da fatal error.
Quindi necessita dell'implementazione del metodo
definito nell'interfaccia swimming che dovrà essere
ridefinito nella classe chimera.
Se poi ho capito bene hai creato la classe
chimera avendo un'eredità multipla di metodi che
dovranno obbligatoriamente essere implementati nella stessa.
Quindi l'interfaccia serve come guida alla costruzione di una
classe che deve obbligatoriamente implementare il metodo
della stessa interfaccia.
Ho solo ridefinito le classi per esempio:
codice:
<?php
abstract class Animal {
public function run()
{
echo "This animal is running...1\n";
}
}
class Horse extends Animal
{
}
class Bird extends Animal
{
public function fly()
{
echo "This animal is flying...2\n";
}
}
class Fish extends Animal
{
public function run()
{
echo "This animal cannot run...3\n";
}
}
$horse = new Horse();
$horse->run(); // Run is not defined but can be accessed for inheritance
echo "Horse";
echo"
";
$bird = new Bird();
$bird->fly();
$bird->run(); // Run is not defined but can be accessed for inheritance
echo "Bird";
echo"
";
$fish = new Fish();
$fish->run(); // the method has been overridden
echo "Fish";
interface running
{
function run();
}
interface flying
{
function fly();
}
interface swimming
{
function swim();
}
class iHorse implements running
{
public function run()
{
}
}
class iBird implements flying
{
public function fly()
{
echo "vola poco ma vola, class iBird";
}
}
class iFish implements swimming
{
public function swim()
{
echo "Fish nuota, class iFish";
}
}
class chimera implements running, flying, swimming
{
public function run()
{
}
public function fly()
{
}
public function swim()
{
echo "Chimera nuota, class chimera";
}
}
$iHorse = new iHorse();
$iBird = new iBird();
$iFish = new iFish();
$chimera = new chimera();
echo "
";
$iBird->fly();
echo "
";
$iFish->swim();
echo "
";
$chimera->swim();
Più o meno ci siamo?
Grazie.