Para aquellos programadores que llegan a .Net de la mano de PHP o Java, verán algo diferente el hecho de heredar métodos de clases. Cuando heredamos una clase en Java o PHP los métodos se sobrescriben redeclarándolos en la clase hija y cuando queremos evitar que una clase hija implemente un método, lo establecemos con la palabra reservada final.
Por ejemplo PHP se utilizaría para evitar la herencia:
//Ejemplo de php
public final function miMetodoNoHeredable() {
//Codigo del metodo
}
En el caso de java es muy similar:
// Ejemplo de java
public final void miMetodoNoHeredable() {
//Codigo del metodo
}
Pero en .Net aunque la base sigue siendo la misma es algo diferente. Para heredar un método, debemos de declarar el método como virtual y para declarar un método como final, usaremos la sentencia sealed (NotOverridable en VB). Para hacer un símil podríamos decir que la palabra reservada final de Java o PHP equivale en cierta medida a la sealed (NotOverridable en VB) de .Net.
Hay que apuntar que por defecto los métodos declarados en .Net son sealed, así que para heredarlos deberemos de declararlos como virtual e indicar a sus hijos que los métodos son override para que sobrescriban los valores del padre.
El caso de .net
// Ejemplo de csharp
public sealed void miMetodoNoHeredable() {
//Codigo del metodo
}
'Ejemplo de Visual Basic .Net o VB.Net
Public NotOverridable Sub miMetodoNoHeredable()
'Codigo del metodo
End Sub
Gracias lo necesitaba!
Se te ha ido la pinza un poco. La unica forma (que conozco) de declarar un metodo, campo o propiedad, 100% no heredable es declararlo privado (private). virtual y override se utilizan para declarar metodos que permitan a sus herederos sobrescribir el codigo. En cuanto a sealed, es cierto que indica el final de virtual.
Hola Anonimo, creo que eres tu quien no lo ha entendido bien, ya que explico como forzarlos a sealed. Un método privado y por tanto cerrado a su clase no es accesible desde el hijo, lo que pretendía explicar era como poder acceder desde un hijo a ese método padre sin poder sobreescribirlo. En cualquier caso, si algo estuviera mal, sería el título de la entrada.