Debido a cuestiones de diseño, en algunas ocasiones precisaremos que al mismo tiempo que
sobrescribimos un miembro dentro de una clase heredada, dicho miembro no pueda ser sobrescrito por
las clases que hereden de esta. En estas situaciones, al declarar el miembro, usaremos la palabra clave
NotOverridable.
Volvamos pues, al ejemplo de la clase Administrativo, en el que sobrescribíamos el método
VerDatos(). Si cambiamos la declaración de dicho método por la mostrada en el Código fuente 269,
una tercera clase Directivo, que heredase de Administrativo, no podría sobrescribir el mencionado
método.
Public Class Administrativo : Inherits Empleado
' rescribimos este método totalmente usando Overrides
' e impedimos que pueda ser rescrito por clases
' derivadas de esta
Public NotOverridable Overrides Sub VerDatos()
Console.WriteLine("Datos del empleado")
Console.WriteLine("==================")
Console.WriteLine("Código: {0}", Me.piID)
Console.WriteLine("Nombre: {0}", UCase(Me.Nombre))
End Sub
End Class
Public Class Directivo : Inherits Administrativo
' se produce un error, no se puede sobrescribir este método
' ya que la clase Administrativo lo impide con NotOverridable
Public Overrides Sub VerDatos()
'.....
'.....
End Sub
End Class
Código fuente 269
No podemos utilizar NotOverridable en métodos de una clase base, ya que la misión de este
modificador es impedir la sobre-escritura de miembros en clases derivadas, pero desde una clase que a
su vez también ha sido derivada desde la clase base. Si no queremos, en una clase base, que un método
pueda ser sobrescrito, simplemente no utilizamos en su declaración la palabra clave Overridable.
No hay comentarios:
Publicar un comentario