Buscador

Herencia y sobre-escritura de métodos - III

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