Override / virtual

27/12/2007 - 17:56 por Erick \(foxero\) | Informe spam
De otro foro me surgio una duda sobre Override / Virtual. Lo posteo aqui
por si me pueden ayudar.
..
Hice un ejemplo pero ahora me confundi un poco:

Si por ejemplo tengo esta clase definida con un metodo publico llamado MSG
en el namespace MisClases

namespace MisClases
..
public class fCheckBox: System.Windows.Forms.CheckBox
{
public void MSG()
{
System.Windows.Forms.MessageBox.Show("MSG de fcheckbox");
}
}

public class fCheckBoxReg : MisClases.fCheckBox
{
public void MSG()
{
System.Windows.Forms.MessageBox.Show("MSG de fcheckboxREG");
}
}

Veo que el metodo MSG se reemplaza sin tener que ponerle 'Override' en la
clase hija ni 'Virtual' a la clase base? Ese es el comportamiento normal?

Gracias

Preguntas similare

Leer las respuestas

#11 Rolando
29/12/2007 - 15:48 | Informe spam
Eso tambien hace suponer que la gran mayoria de los metodos publicos de las
clases del FrameWork vienen declarados como Virtual. Cierto ?


"Rolando" escribió en el mensaje
news:%
Aclarado. Muchas gracias






"Octavio Hernandez" escribió en el mensaje
news:%
En C++ (donde no hay dos palabras claves, virtual y override, sino solo
una, virtual),
se dice "once virtual, always virtual". Aquí en C# habría que decir "si
le pones virtual
a un método de una clase, luego ponle override a ese método en todas sus
clases derivadas".
Si en algún momento no lo haces, rompes la cadena de polimorfismo.

Slds - Octavio

"Rolando" wrote in message
news:%
>
Pues bien, si como indicas creamos una clase Nieta que hereda de la
clase Hija, al usar override vamos a obtener un error.
Esto porque el método reimplementado en la clase Hija (recordemos que
el compilador ha impuesto un new), representa un miembro que no es
virtual, por tanto la clase Nieta no tendrá un metodo al cual hacer un
override.





Entonces, abusando de tus conocimientos que se ve que son bastante
profundos, como podriamos resolver un caso real similar al descrito? es
decir, donde haya necesidad de tener mas de un nivel de herencia y un
mismo metodo virtual pueda implementar polimorfismo en cada nivel.














Respuesta Responder a este mensaje
#12 Octavio Hernandez
30/12/2007 - 10:11 | Informe spam
Eso tambien hace suponer que la gran mayoria de los metodos publicos de
las clases del FrameWork vienen declarados como Virtual. Cierto ?



Solo aquellos que los autores entendieron que podían ser objeto de
redefinición.
No tengo estadísticas (estaría bien calcularlas), yo diría que los virtuales
son mayoría
pero no "gran mayoría".

Slds - octavio
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida