2013-01-09 14 views
5

To jest pytanie bardziej ułatwiające rozwój, a także pytanie o najlepszą praktykę.Czy klasa PHP Extended dziedziczy również interfejsy?

<?php 
class FOO implements Iterator 
{ 
    .... 
} 

class BAR extends FOO 
{ 
    .... 
} 

class OTHER extends FOO implements Iterator 
{ 
    .... 
} 
?> 

W powyższym przykładzie, czy BAR miałby również interfejs Iteratora? Jeśli tak, czy lepiej jest definiować interfejs za każdym razem (tak jak INNE), czy też definicja BAR mogłaby być uważana za najlepszą praktykę?

Uprościliśmy ten przykład, ponieważ używamy Klasa abstrakcyjna dla FOO, którą chcemy zapewnić, ma obsługę Iteratora, która może być wtedy przesłonięta w klasie BAR w celu przemieszczania się między elementami. Chcemy, aby niektóre funkcje były wymuszane do zdefiniowania dla podklas, ale chcą dziedziczyć inne metody w odpowiedni sposób i nadal używać podstawowych iteratorów, bez konieczności definiowania interfejsu na klasach potomnych.

Odpowiedz

5

Podklasa odziedziczy implementację superklasy interfejsu Iterator, którą można przesłonić. Nie musisz wyraźnie mówić: implements Iterator, ale jeśli to zrobisz, musisz wdrożyć wszystkie metody interfejsu w podklasie.

+0

Dzięki. Tego się spodziewałem, ale bez szczegółowych testów nie byłem pewien i chciałem zweryfikować moje założenia. –

Powiązane problemy