User Tools

Site Tools


implements_add_methods_to_a_class_.htm
Navigation:  Language Reference > 5 - Declaration Attributes > Variable and Entity Attributes >====== IMPLEMENTS(add methods to a CLASS) ====== Previous pageReturn to chapter overviewNext page

IMPLEMENTS(interface)

blk2blue.jpg

IMPLEMENTS Adds additional methods to a CLASS.
interface A previously defined INTERFACE structure whose methods will be defined by the CLASS that is implementing the specified interface.

When a class IMPLEMENTS an interface, it inherits all methods that are defined in the INTERFACE. A class may IMPLEMENT multiple INTERFACEs. The class normally defines all methods declared in each INTERFACE that is implemented.

We now have support for the re-implementing of INTERFACEs in derived classes. With the new implementation, if the child class has the IMPLEMENTS attribute for an interface already implemented above it in the hierarchy, the compiler builds a new interface VMT. See the IMPLEMENTS Inheritance topic

Example 1:

MyInterface INTERFACE                    ! Interface structure

MyProc1      PROCEDURE                   ! Method prototype

MyProc2      PROCEDURE                   ! Method prototype

           END

MyClass  CLASS,IMPLEMENTS(MyInterface)   ! Class

        END

MyClass.MyInterface.MyProc1              !Method declaration

CODE

MyClass.MyInterface.MyProc2              !Method declaration

CODE

black.jpg

Example 2:

MyInterface INTERFACE                    ! Interface structure

MyProc1      PROCEDURE                   ! Method prototype

MyProc2      PROCEDURE,BOOL              ! Method prototype

           END

MyClass  CLASS,IMPLEMENTS(MyInterface)   ! Class

MyProc1Worker  PROCEDURE,VIRTUAL         ! Method prototype

MyProc2Worker  PROCEDURE,BOOL,VIRTUAL    ! Method prototype

        END

MyClass.MyProc1Worker      PROCEDURE

 CODE

MyClass.MyProc2Worker      PROCEDURE

 CODE

 RETURN CHOOSE(YEAR(TODAY())>2000)

MyClass.MyInterface.MyProc1              !Method declaration

CODE

!implementation stub calls class method to do real work:

self.MyProc1Worker  

return

MyClass.MyInterface.MyProc2              !Method declaration

CODE

!implementation stub calls class method to do real work

return self.MyProc2Worker()  

MyDerivedClass  CLASS(MyClass) ! ,IMPLEMENTS(MyInterface) not allowed

!Interface already implemented by parent

MyProc2Worker    PROCEDURE,BOOL,DERIVED

               END

MyDerivedClass.MyProc2Worker      PROCEDURE

BooRt  BOOL

CODE

BooRt = parent.MyProc2Worker()

IF MONTH(TODAY())=1 THEN BooRt=0.

RETURN BooRt

See Also:

INTERFACE

IMPLEMENTS Inheritance

implements_add_methods_to_a_class_.htm.txt · Last modified: 2021/04/15 15:57 (external edit)