No lo entiendo...

04/10/2005 - 18:47 por Sergio | Informe spam
Hola:

Estoy empezando con VB.NET y tirando el siguiente código no entiendo
porque funciona y no me da error:

Public Class Class1
Public Sub Sub1()
'...
End Sub
End Class

Public Class Class2
Inherits Class1

Public Overloads Sub Sub1()
'...
End Sub
End Class

ó

Public Class Class1
Public Overridable Sub Sub1()
'...
End Sub
End Class

Public Class Class2
Inherits Class1

Public Overloads Overrides Sub Sub1()
'...
End Sub
End Class

En el primer caso:

¿Qué estoy sobrecargando (la firma del procedimiento es igual)? ¿No
sería una sobreescritura en toda regla (aunque no tenga ni pueda poner
Overrides?

En el segundo caso:

Es una sobreescritura, pero ¿Por qué puedo decir que es una
sobrecarga (que no lo es)?

Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
04/10/2005 - 20:58 | Informe spam
El uso de Overloads es medio extraño. En el primer caso tiene un significado
similar a Shadows, es decir, oculta el metodo definido en la clase base. Y
en el segundo caso no modifica nada ya que se incluye overrides y por lo
tanto no puede reemplazar a Shadows. No produce error ya que Overloads puede
colocarse aunque haya solo una definicion del metodo. Y ademas Overloads
puede omitirse si el metodo que se esta sobrecargando no esta definido en
una clase base:

Public Class Class1

Public Sub Sub1()
End Sub

Public Sub Sub1(ByVal param As String)
End Sub

End Class

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
04/10/2005 - 20:58 | Informe spam
El uso de Overloads es medio extraño. En el primer caso tiene un significado
similar a Shadows, es decir, oculta el metodo definido en la clase base. Y
en el segundo caso no modifica nada ya que se incluye overrides y por lo
tanto no puede reemplazar a Shadows. No produce error ya que Overloads puede
colocarse aunque haya solo una definicion del metodo. Y ademas Overloads
puede omitirse si el metodo que se esta sobrecargando no esta definido en
una clase base:

Public Class Class1

Public Sub Sub1()
End Sub

Public Sub Sub1(ByVal param As String)
End Sub

End Class

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#3 Sergio
04/10/2005 - 21:10 | Informe spam
Gracias Eduardo.
La verdad es que si que es raro a veces el uso de la palabra Overloads.
Un saludo.
Respuesta Responder a este mensaje
#4 Manuel Camaron
04/10/2005 - 22:52 | Informe spam
Realmente en el primer caso no hay problema que, no
defininas ninguna firma de parametros ya que el Overloads
o sobrecarga se creo con el fin de desplazar los
parametros optional, en este caso obtienes un metodo
sobrecargado con dos firmas de parametros iguales aun que
no genera error no logas!.

en el segundo caso, es un metodo sobrecargado y
reescrito, lo cualse usa para modificar el comportminto
del metodo y su firma de parametros. Segun la logica que
se necesite.

Hola:

Estoy empezando con VB.NET y tirando el siguiente código


no entiendo
porque funciona y no me da error:

Public Class Class1
Public Sub Sub1()
'...
End Sub
End Class

Public Class Class2
Inherits Class1

Public Overloads Sub Sub1()
'...
End Sub
End Class

ó

Public Class Class1
Public Overridable Sub Sub1()
'...
End Sub
End Class

Public Class Class2
Inherits Class1

Public Overloads Overrides Sub Sub1()
'...
End Sub
End Class

En el primer caso:

¿Qué estoy sobrecargando (la firma del procedimiento es


igual)? ¿No
sería una sobreescritura en toda regla (aunque no tenga


ni pueda poner
Overrides?

En el segundo caso:

Es una sobreescritura, pero ¿Por qué puedo decir que es


una
sobrecarga (que no lo es)?

Gracias y un saludo.

.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida