FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Metodos heredados de una clase
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Metodos heredados de una clase
Posted: Fri Oct 21, 2005 11:18 PM
¿Como puedo acceder al método padre de una clase cuando se encuentra redefinido?
Hace tiempo leí algo al respecto, pero por más que busco no lo encuentro.

Por ejemplo

      CLASS UNO
             METHOD nombre()  INLINE "ESUNO"
          END CLASS

         CLASS DOS FROM UNO
            METHOD nombre()  INLINE "ESDOS"
         ENDCLASS

         CLASS TRES FROM DOS
            METHOD nombre()   INLINE "ESTRES"
        ENDCLASS


Si en mi función main() creo un objeto O1 de la clase TRES y ejecuto el método nombre() obtengo ESTRES,

Como obtengo el "ESDOS" y el "ESUNO"
Posts: 84
Joined: Fri Oct 07, 2005 04:51 PM
Re: Metodos heredados de una clase
Posted: Sat Oct 22, 2005 12:03 AM
miarcod wrote:¿Como puedo acceder al método padre de una clase cuando se encuentra redefinido?
Hace tiempo leí algo al respecto, pero por más que busco no lo encuentro.

Por ejemplo

      CLASS UNO
             METHOD nombre()  INLINE "ESUNO"
          END CLASS

         CLASS DOS FROM UNO
            METHOD nombre()  INLINE "ESDOS"
         ENDCLASS

         CLASS TRES FROM DOS
            METHOD nombre()   INLINE "ESTRES"
        ENDCLASS


Si en mi función main() creo un objeto O1 de la clase TRES y ejecuto el método nombre() obtengo ESTRES,

Como obtengo el "ESDOS" y el "ESUNO"


Caso de Herancia Simple:
Super:<Metodo> --> Metodo del Padre :-)

Super proviene de SUPERTIPO, En objetos las jerarquías se habla de subtipo o especialización de un supertipo o generalización. . Los subtipos (niveles inferiores de la jerarquía) heredan las características de sus supertipos, además, cada instancia de un tipo de objeto lo es también de sus supertipos.

Caso de Herencia Multiple:
Super devolvera el objeto primero, aunque la clase que hereda a uno o mas objetos tiene variables de instancia o exportadas cuyos nombres son los de la clase que se pretende heredar. Esto es aplicable a Objects y el motor de Objetos de Harbour.


Salu2
Hernan :-)
Posts: 229
Joined: Wed Oct 12, 2005 05:32 PM
Metodos heredados de una clase
Posted: Sun Oct 23, 2005 06:39 PM
Hola Hernán, Miarcod,

Utilizando el motor de objetos de (x)Harbour, según veo en el código de Miarcod, si hacemos super:Nombre() devolverá "ESDOS" por que el padre de la clase TRES es DOS.

A nivel PRG, si lo que interesa es acceder a la clase 'padre' de una jerarquía de clases debería hacerse de una forma parecida a esta:

CLASS UNO
         METHOD nombre()  INLINE "ESUNO"
END CLASS

CLASS DOS FROM UNO
           METHOD nombre()  Super:Nombre()
ENDCLASS

CLASS TRES FROM DOS
           METHOD nombre()   Super:Nombre()
ENDCLASS


Con esto te aseguras siempre que la llamada al método Nombre dará como resultado el que hay en la case padre.

Saludos,
José Luis Capel

Continue the discussion