29 lines
912 B
Plaintext
29 lines
912 B
Plaintext
INSTALL @lib$ + "CLASSLIB"
|
|
|
|
REM Create parent class T:
|
|
DIM classT{array#(0), setval, retval}
|
|
DEF classT.setval (n%,v) classT.array#(n%) = v : ENDPROC
|
|
DEF classT.retval (n%) = classT.array#(n%)
|
|
PROC_class(classT{})
|
|
|
|
REM Create class S derived from T, known only at run-time:
|
|
RunTimeSize% = RND(100)
|
|
DIM classS{array#(RunTimeSize%)}
|
|
PROC_inherit(classS{}, classT{})
|
|
DEF classS.retval (n%) = classS.array#(n%) ^ 2 : REM Overridden method
|
|
PROC_class(classS{})
|
|
|
|
REM Create an instance of class S:
|
|
PROC_new(myobject{}, classS{})
|
|
|
|
REM Now make a copy of the instance:
|
|
DIM mycopy{} = myobject{}
|
|
mycopy{} = myobject{}
|
|
PROC_discard(myobject{})
|
|
|
|
REM Test the copy (should print 123^2):
|
|
PROC(mycopy.setval)(RunTimeSize%, 123)
|
|
result% = FN(mycopy.retval)(RunTimeSize%)
|
|
PRINT result%
|
|
END
|