C sharp - Abstraccion y Generidcidad

 
Vista:
sin imagen de perfil

Abstraccion y Generidcidad

Publicado por Alberto (6 intervenciones) el 02/07/2007 11:44:07
Si tengo la clase abstracta Articulo y La clase Jugador que la implementa

El compilador me deja hacer esto.

public void hola(Articulo a)
{
a.toString();
}

despues en otro método llamar a:

hola(new Jugador());


¿Porque no me deja hacer esto?

public void hola(List<Articulo> a)
{
a.toString();
}

hola(new List<Jugador>());
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Abstraccion y Generidcidad

Publicado por fisa (87 intervenciones) el 04/07/2007 13:33:17
Jugador es una implementación de Articulo, es decir, que hereda del mismo. Por ello te deja pasar un Jugador cuando el parametro debe ser de tipo Articulo (porque un Jugador "es" a su vez un Articulo).
Pero que Jugador herede de Articulo no implica que List<Jugador> herede de List<Articulo>. Por ello, List<Jugador> no "es" un List<Articulo>, y entonces no puede ser pasado en un parametro que necesite objetos del tipo List<Articulo>.

Se entiende? Cualquier cosa pregunta

Fisa (Juan Pedro Fisanotti)
Correo: [email protected]
MSN: [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar