2012-01-19 14 views
7

¿Es correcto lo siguiente? (Tenga en cuenta que no he escrito los cuerpos de las clases y yo también no escribir las interfaces ;-))Superclase y subclase, cada una con su propia interfaz

abstract class SuperClass implements SuperInterface 

class SubClass extends SuperClass implements SubInterface 

O es esta práctica generalmente se considera mala?

Lo que me pregunto es decir, que el siguiente no funcionó:

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

Este código no puede ser correcto, revíselo nuevamente. – SHiRKiT

+0

¿Tiene motivos para sospechar que esta es una mala práctica? ¿Puedes explicar esas razones? – Jesper

+3

¿Por qué no puede estar bien? me parece bien –

Respuesta

10

No es ni bueno ni malo. SubClass aquí implementa SuperInterface y SubInterface (así como la interfaz definida por SuperClass 'métodos públicos). Si eso es lo que necesitas, está bien.

En cuanto a su segundo ejemplo

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

Se ha declarado en la lista de elementos SubInterface, pero queremos obtener SuperInterface elementos de la misma. Si SubInterface se extiende SuperInterface, esto tiene sentido. De otra forma no.

+0

¡Bien, muchas gracias por su explicación! –

1

esto está muy bien en función de lo que quiere lograr (es posible que haya un mejor diseño para lo que está tratando de hacer) Tenga en cuenta que SubClass es SuperInterface y SubInterface

3

Es correcto. Por qué no ?

Su SuperClass implementa una SuperInterface que también implementada por su SubClass (gracias a la SubClass se extiende SuperClass).

Además, su SubClass implementa otra interfaz (SubInterface).

No hay nada de malo en su código/arquitectura.

SuperClass -- implements --> SuperInterface 
SubClass -- extends --> SuperClass -- implements --> SuperInterface*, SubInterface 
  • implementos implícitos debido a la extiende de SuperClass
Cuestiones relacionadas