Ocultar propiedad en subclase

08/01/2008 - 04:59 por Rolando | Informe spam
Pues eso, como puedo en una subclase ocultar una propiedad que existe en la
clase base?

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
08/01/2008 - 08:10 | Informe spam
"Rolando" wrote in message
news:u6l$
Pues eso, como puedo en una subclase ocultar una propiedad que existe en
la clase base?



No la puedes ocultar, pero puedes "pisarla" (con "override" o con "new"
dependiendo de que quieras ocultarla polimórficamente en la clase madre o
solo desde la clase hija), de forma que los llamantes ejecuten tu nueva
propiedad (que puede "no hacer nada", o lanzar una excepción) en lugar de la
original.
Respuesta Responder a este mensaje
#2 Rolando
08/01/2008 - 12:24 | Informe spam
Muchas gracias.

"Alberto Poblacion"
escribió en el mensaje news:%23%
"Rolando" wrote in message
news:u6l$
Pues eso, como puedo en una subclase ocultar una propiedad que existe en
la clase base?



No la puedes ocultar, pero puedes "pisarla" (con "override" o con "new"
dependiendo de que quieras ocultarla polimórficamente en la clase madre o
solo desde la clase hija), de forma que los llamantes ejecuten tu nueva
propiedad (que puede "no hacer nada", o lanzar una excepción) en lugar de
la original.

Respuesta Responder a este mensaje
#3 Daniel A. Calvin - Cooperator Team
08/01/2008 - 17:21 | Informe spam
Hola Rolando

Eso quieres hacer viola los principios de programación OO.
En primer lugar no vas a poder ocultarla.

Podes hacer dos cosas:
1 - Override, esto te permite implementar el propio comportamiento de la
propiedad segun necesites.
2 - New, esto hace que el metodo original sea ocultado. lo que significa
que cuando hagas un cast al objeto base se invocara la implementacion de la
propiedad original, la de la clase base y nunca la subclase, solo se
invocara la proiedad adornada con el new cuando el objeto lo trates como el
tipo concreto de la subclase.

Resumiendo, siempre va a ser visible.

Porque te digo que no deberías hacerlo?

Hay algo que se llama principio de substitución, ese principio dice que toda
clase debe poder reemplazarse por cualquiera de sus subclases. ( esto es sin
que el que consume a esa clase se interese si es la clase base o alguna
subclase de la misma )

Pegale una mirada a:

http://arq-mug.blogspot.com/2007/06...-de-2.html

Busca en ese articulo principio de substitución.

Luego para ver como se resuelven esas de cosas de una forma mas elgante lo
que podes es ver el siguiente link:

http://arq-mug.blogspot.com/2007/06...-de-2.html

Busca en ese articulo Segregación de interface.

Saludos

Daniel Calvin


"Rolando" escribió en el mensaje
news:u6l$
Pues eso, como puedo en una subclase ocultar una propiedad que existe en
la clase base?

Respuesta Responder a este mensaje
#4 Rolando
08/01/2008 - 17:40 | Informe spam
Ya lo entiendo mejor. Mil gracias por la aportacion y los enlaces que has
puesto.



"Daniel A. Calvin - Cooperator Team"
escribió en el mensaje news:%
Hola Rolando

Eso quieres hacer viola los principios de programación OO.
En primer lugar no vas a poder ocultarla.

Podes hacer dos cosas:
1 - Override, esto te permite implementar el propio comportamiento de
la propiedad segun necesites.
2 - New, esto hace que el metodo original sea ocultado. lo que
significa que cuando hagas un cast al objeto base se invocara la
implementacion de la propiedad original, la de la clase base y nunca la
subclase, solo se invocara la proiedad adornada con el new cuando el
objeto lo trates como el tipo concreto de la subclase.

Resumiendo, siempre va a ser visible.

Porque te digo que no deberías hacerlo?

Hay algo que se llama principio de substitución, ese principio dice que
toda clase debe poder reemplazarse por cualquiera de sus subclases. ( esto
es sin que el que consume a esa clase se interese si es la clase base o
alguna subclase de la misma )

Pegale una mirada a:

http://arq-mug.blogspot.com/2007/06...-de-2.html

Busca en ese articulo principio de substitución.

Luego para ver como se resuelven esas de cosas de una forma mas elgante lo
que podes es ver el siguiente link:

http://arq-mug.blogspot.com/2007/06...-de-2.html

Busca en ese articulo Segregación de interface.

Saludos

Daniel Calvin


"Rolando" escribió en el mensaje
news:u6l$
Pues eso, como puedo en una subclase ocultar una propiedad que existe en
la clase base?





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida