2012-01-19 11 views
7

Czy to jest w porządku? (Należy pamiętać, że nie pisałem ciał klas i ja również nie pisać interfejsy ;-))Nadklasa i podklasa każda z własnym interfejsem

abstract class SuperClass implements SuperInterface 

class SubClass extends SuperClass implements SubInterface 

Albo jest to praktyka powszechnie uważane za złe?

Co sprawiło, że zastanawiam się, że następujące nie działa:

List<SubInterface> myList; 
... 
for(SuperInterface si : myList) { 
    ... 
} 
+0

Ten kod nie może być właściwy, proszę sprawdzić ponownie. – SHiRKiT

+0

Czy masz powody, by podejrzewać, że jest to zła praktyka? Czy możesz wyjaśnić te powody? – Jesper

+3

Dlaczego nie można mieć racji? Wygląda mi dobrze –

Odpowiedz

10

Nie jest to ani dobre, ani złe. SubClass tutaj realizuje zarówno SuperInterface i SubInterface (jak również interfejs zdefiniowany przez SuperClass publicznych metod). Jeśli tego właśnie potrzebujesz - w porządku.

Co do drugiego przykładu

List<SubInterface> myList; 
... 
for(SuperInterface si : myList) { 
    ... 
} 

Ty ogłosił listę SubInterface elementów, ale chcą się pobrać SuperInterface elementy z nim. Jeśli SubInterface rozszerza się o SuperInterface, ma to pewien sens. W przeciwnym razie nie.

+0

Dobrze, bardzo dziękuję za wyjaśnienia! –

1

to jest w porządku, w zależności od tego, co chcesz osiągnąć (nie może być lepszy projekt za to, co staramy się robić) należy pamiętać, że podklasa jest zarówno SuperInterface i podinterfejsu

3

to jest poprawna. Dlaczego nie ?

Twój SuperClass implementuje SuperInterface który również realizowany przez podklasy (dzięki podklasy rozciąga SuperClass).

Ponadto podklasie realizuje inny interfejs (podinterfejsu).

Nie ma nic złego w kodzie/architektury.

SuperClass -- implements --> SuperInterface 
SubClass -- extends --> SuperClass -- implements --> SuperInterface*, SubInterface 
  • niejawne ze względu na narzędzia rozciąga się od SuperClass
Powiązane problemy