Sobreescribir un constructor?

10/01/2008 - 04:41 por Berto | Informe spam
Se puede sobreescribir o hacer override de un constructor? como?


Berto

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
10/01/2008 - 07:21 | Informe spam
"Berto" <bb> wrote in message news:
Se puede sobreescribir o hacer override de un constructor? como?



Basta con declarar el constructor en la clase hija. Este nuevo
constructor es el que se ejecuta cuando haces un "new" de la hija. De hecho,
no solo se puede sino que se debe declarar el constructor en la clase hija,
si quieres poder hacer un "new" con los correspondientes argumentos, ya que
el constructor no se hereda de la madre (a no ser que uses el constructor
predeterminado).
Respuesta Responder a este mensaje
#2 Berto
10/01/2008 - 13:01 | Informe spam
Si pero asumiendo que no hay parametros, yo lo que quiero es que no se
ejecute el constructor predeterminado de la clase base porque en las
pruebas que he hecho siempre se ejecuta primero y luego se ejecuta el de la
clase hija.

Berto

"Alberto Poblacion"
escribió en el mensaje news:
"Berto" <bb> wrote in message news:
Se puede sobreescribir o hacer override de un constructor? como?



Basta con declarar el constructor en la clase hija. Este nuevo
constructor es el que se ejecuta cuando haces un "new" de la hija. De
hecho, no solo se puede sino que se debe declarar el constructor en la
clase hija, si quieres poder hacer un "new" con los correspondientes
argumentos, ya que el constructor no se hereda de la madre (a no ser que
uses el constructor predeterminado).

Respuesta Responder a este mensaje
#3 Octavio Hernandez
10/01/2008 - 14:36 | Informe spam
...siempre se ejecuta primero y luego se ejecuta el de la clase hija.





Eso SIEMPRE es así: el constructor de una clase se apoya en el de su clase
base,
éste en el de la suya y así sucesivamente, subiendo hasta el de
System.Object.

Para resolver tu problema puedes hacer algo como esto:

public Madre
{
// constructor protegido con un parámetro
protected Madre(bool desdeHija)
{
if (desdeHija)
return; // no hacer nada
else
{
// las cosas "normales" del constructor
}
}
// el único constructor que verán quienes no heredan de ella
// pasa false al constructor anterior
public Madre(): this(false)
{
}
}

public Hija: Madre
{
public Hija(): Madre(true)
// llama al constructor de la clase base pasando true,
// para que allí no ocurra nada
{
}
}

slds - octavio




Berto

"Alberto Poblacion"
escribió en el mensaje news:
"Berto" <bb> wrote in message
news:
Se puede sobreescribir o hacer override de un constructor? como?



Basta con declarar el constructor en la clase hija. Este nuevo
constructor es el que se ejecuta cuando haces un "new" de la hija. De
hecho, no solo se puede sino que se debe declarar el constructor en la
clase hija, si quieres poder hacer un "new" con los correspondientes
argumentos, ya que el constructor no se hereda de la madre (a no ser que
uses el constructor predeterminado).





Respuesta Responder a este mensaje
#4 Berto
10/01/2008 - 15:09 | Informe spam

Eso SIEMPRE es así: el constructor de una clase se apoya en el de su clase
base,
éste en el de la suya y así sucesivamente, subiendo hasta el de
System.Object.




Si claro, eso lo comprendo porque es logico que sea asi ya que es la
definicion de una herencia "es un". Lo que buscaba era una forma de simular
un override, lo cual ya me has explicado con el truco que me has dado.

Muchas gracias

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