Citat:
Originalno napisao jablan
Samim tim ne postoji obaveza programera da pravi klase u kojima kaže "e sad ovde će biti jedna metoda, ali neću sad da je implementiram, već će to morati da urade potklase", da bi zadovoljio kompajler, kao što postoji u statičkim jezicima tipa Jave.
|
Postoji
PHP kôd:
class Vizija
{
abstract function definisiViziju();
}
class Birokratija extends Vizija
{
}
Klasa Birokratija je u obavezi da implementira metodu definisiViziju inače će interpreter prijaviti grešku:
PHP kôd:
Fatal error: Class Vizija contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Vizija::definisiViziju)
Što se tiče primera sa Patkom i Čovekom očigledno je da oni treba da implementiraju u najmanju ruku jedan isti interfejs (samo u tvom primeru, jer ako bismo sada išli do kraja rekli bismo da je potrebno primeniti adapter patern, jer je odličan za ovu imitaciju patke).
Webarto je krenuo u pravom smeru.
PHP kôd:
interface LeteciObjekat
{
public function quack();
public function fly();
}
function QuackAndFly(LeteciObjekat $obj){$obj->quack(); $obj->fly();}