IMPLEMENTS(add methods to a CLASS)

Top  Previous  Next

 

IMPLEMENTS(interface)

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

 

 

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