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

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: 2023/09/16 07:21 by carlbarnes