|
|
|
En el artículo de constructores hemos visto como crear objetos con unas características iniciales pero ¿qué pasa si queremos crear un objeto gato sin ningún parámetro o simplemente desconocemos alguno?. Simplemente sobrecargaremos los constructores dentro de la clase. ¿Sobrecargar? Exacto, así llamaremos a los métodos con un mismo nombre pero que permitirán la entrada de diferentes parámetros. Normalmente, los constructores suelen ser sobrecargados y no hará falta la utilización de ningún modificador extra. Vamos a ampliar los constructores de la clase Gato:
|
|
'Antiguo constructor parametrizado
Sub New(ByVal col As String, ByVal Gr As Integer) Me.color = col Me.Peso = Gr End Sub 'Nuevo constructor sobrecargado de una clase derivada
Sub New() MyBase.New End Sub 'Nuevo constructor sobrecargado de una clase primaria
Sub New()
End Sub
|
|
Ahora el objeto se puede instanciar sin necesidad de enviarle ningún parámetro. Si la clase es derivada, debemos llamar al constructor de la clase primaria mediante la palabra clave MyBase ya que no nos es posible llamar al constructor primaria directamente desde el código de la aplicación. Por supuesto este es un trabajo que debe realizar la clase y no el usuario que la utilice.
|
|
Dim gato1 As New Gato("blanco", 500)Dim gato2 As New Gato()
|
|
De la misma forma en que hemos sobrecargado un constructor podemos también sobrecargar métodos de nuestras clases para así darles más funcionalidad y hacerlas menos estrictas a la hora de ser usadas por un usuario. Al Igual que con los constructores los métodos sobrecargados se diferenciaran sólo por el tipo de parámetros que aceptarán y tendrán en común el nombre de la acción. También debemos tener en cuenta las siguientes limitaciones : NET no permite la sobrecarga de métodos con los mismos parámetros de entrada, aunque la implementación de estos sea diferente (recordemos que los métodos sobrecargados sólo se diferenciaran por los parámetros!!) No es correcto intentar sobrecargar una propiedad con un método o al revés. Por último tampoco se permite sobrecargar métodos que contengan algún parámetro opcional (la palabra clave Optional) que contenga los mismos parámetros. Si pensamos un poco, el simple hecho de poner un parámetro opcional ya crea sobrecarga en el mismo método y entraría en conflicto si creamos una nueva sobrecarga con alguna coincidencia en los parámetros opcionales. Veamos unos ejemplos:
|
|
Sub Correr() Console.WriteLine("Corro") End Sub Sub Correr(ByVal velocidad As Integer) Console.WriteLine("Corro a una velocidad de :" & velocidad) End Sub
Sub Correr(ByVal velocidad As Integer, Lugar As String) Console.WriteLine("Corro a una velocidad de :" & velocidad & " por " & Lugar) End Sub
|
|
|
|
Este sitio se actualizó por última vez el 27 de diciembre de 2004