CLASES ABSTRACTAS

02/05/2006 - 00:43 por Jose Fernandez | Informe spam
Hola. tengo una duda...

Tengo dos clases (para la capa de datos). Una abstracta (ClaseA) y la que
hereda de ella (ClaseB).
Ahora mi duda es la siguiente.
En esta aplicacion que tngo, que la estoy estudiando, veo que NUNCA se crean
instancias de ClaseB, sino de ClaseA mediante un metodo que retorna un
objeto de su mismo tipo ClaseA. Hasta donde yo sabia, las clases abstractas
no se podian instanciar. Pero esto rompe con lo que tenia yo en mi mente.

Por ejemplo. Analicen el escenario.

Clase Usuarios (esta pertenece al BussinessLayer o Reglas de Negocio)

la clase Usuarios tiene un metodo que es TraerUsuarios.

Seria asi como

class Usuarios
{
public static TraerUsuario
{
ClaseA xx=ClaseA.CrearInstancia(); // <-- Se crea la "instancia"
de la clase abstracta.
xx.TraerUsuario(int ID) <-- Un metodo abstracto en ClaseA,
override en ClaseB.
}
}

La historia de esto es que nunca veo que se llame a ClaseB en ningun
momento, que es la que contiene todos los override de los metodos abstractos
de ClaseA. Estoy conundido. Alguien sabe como funciona esto?

saludos

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
02/05/2006 - 08:30 | Informe spam
En ningun momento se crea una instancia de ClaseA. ClaseA.CrearInstancia te
crea internamente una instancia de alguna clase que deriva de ella y te
devuelve la referencia como ClaseA. Cuando llamas al metodo estas llamando a
la implementacion de ese metodo en la clase derivada, aunque lo hagas a
traves de una referencia de tipo ClaseA. La idea detras de todo esto es que
el codigo cliente queda independiente de la implementacion y puede usarse
para distintas implementaciones de la clase sin necesidad de cambios. Por
ejemplo una ClaseB heredada de ClaseA puede usar una BD para su
implementacion mientras que una ClaseC puede usar un archivo XML, y sin
importar cual de las dos implementaciones se use, el codigo de
Usuarios.TraerUsuario funciona igual y no requiere de modificaciones.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida