AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / POO (Programación Orientada a Objetos)
  • Subtítulo de error
  • Explicaciones
  • Ejemplo 1
  • Ejemplo 2
  • Soluciones
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Error: Redefinición de la sintaxis
Subtítulo de error
Los métodos de la clase <derivada y de la clase <base no tienen el mismo prototipo.. El compilador no puede resolver la ambigüedad entre un método redefinido y un método multisintáctico.
Explicaciones
Este error se produce cuando se utilizan diferentes sintaxis para un método con el mismo nombre que se encuentra tanto en una clase base como en una clase derivada de la clase base..
De hecho, cuando un método encontrado en la clase base y en la clase derivada no tiene el mismo prototipo, el compilador no puede decidir:
  • si se trata de un error en el código existente.
  • si el comportamiento esperado es una redefinición del método. La redefinición del método estaba disponible en las versiones anteriores.
  • si el comportamiento esperado es una sintaxis adicional para el método (nueva característica en la versión 16).
Para un método redefinido, la manipulación de una instancia de la clase derivada siempre ejecuta los métodos de la clase derivada.
Para un método que utiliza diferentes prototipos (multi-sintaxis), la ejecución utilizará la mejor sintaxis encontrada de acuerdo con los parámetros especificados..
La redefinición del método y el uso de un método multi-sintáctico se escriben de la misma manera en el editor de código.
Para evitar esta ambigüedad, el compilador muestra este error para get un código más claro.

Ejemplo 1

Se define una clase derivada. Esta clase también utiliza un método llamado "Method1" pero con un prototipo diferente: el tipo de parámetro es diferente. En este caso, se muestra el error de compilación.

Ejemplo 2

Se define una clase derivada. Esta clase también utiliza un método llamado "Method2" pero con un prototipo diferente: El "Método 2" de la clase base no espera ningún parámetro y el "Método 2" de la clase derivada espera 2 parámetros. En este caso, se muestra el error de compilación.
Soluciones
Pueden darse tres casos:
  • 1er caso: Es un error: los dos métodos deben tener el mismo prototipo.
    Solución: Corregir los prototipos
  • 2º caso: La redefinición del método con un prototipo diferente se hizo a propósito.
    Este modo de funcionamiento corresponde al modo de funcionamiento de la Default hasta la versión 15.
    • Solución 1: Añadir el atributo cuya extensión es <override> al método de la clase derivada.
      PROCEDURE method([<Parameters>]) <override>
    • Solución 2: Renombrar el método de la clase derivada.
  • 3er caso: El método de la clase derivada debe considerarse como una sintaxis adicional del método de la clase base (uso de la multisintaxis).
    Solución: Añadir el atributo cuya extensión es <overload> al método de la clase derivada.
    Para obtener más información, consulte Gestionando el overload.
    PROCEDURE method([<Parameters>]) <overload>
Versión mínima requerida
  • Versión 16
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local