The first sample is no problem. That is wherefore abstract is. Abstract are only for declaration, they can not be created.
the second comes from missing overloading and is a really bad thing for inheritance, can only second that.
3rd example:
use method new for initialisation things. They are called for any of their base types.
if you create an instance of test_ex you will see that both new will be called as the creation of test_ex needs an initialisation of test for extension.
btw: I found something very strange today in one of BRLs modules.
There you see that he calls a Typename with a value (TMax2DGraphicsDriver (g)) to create a type. But so far I'm not able to understand what it does there or how to use. If I try it, I always get the message "Illegal subexpression for object cast" ...
So somehow constructor with values seem to be possible.
type test abstract ... end type type test_imp extends test ' working implementation of test ... end type
the second comes from missing overloading and is a really bad thing for inheritance, can only second that.
3rd example:
use method new for initialisation things. They are called for any of their base types.
type test method new () print "test" end method end type type test_ex extends test method new () print "trala" end method end type
if you create an instance of test_ex you will see that both new will be called as the creation of test_ex needs an initialisation of test for extension.
btw: I found something very strange today in one of BRLs modules.
There you see that he calls a Typename with a value (TMax2DGraphicsDriver (g)) to create a type. But so far I'm not able to understand what it does there or how to use. If I try it, I always get the message "Illegal subexpression for object cast" ...
So somehow constructor with values seem to be possible.