Hello,
if I do this in Java:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public class Main {
public static void main(String[] args) {
BaseClass B = new BaseClass();
B.Foo();
System.out.println("");
DrvdClass D = new DrvdClass();
D.Foo();
System.out.println("");
B = D;
B.Foo();
System.out.println("");
}
}
class BaseClass {
void Foo(){
System.out.println( "BaseClass -> Foo" );
FooOverridable();
}
void FooOverridable(){
System.out.println( "BaseClass -> FooOverridable" );
}
}
class DrvdClass extends BaseClass {
@Override void FooOverridable(){
System.out.println( "DrvdClass -> FooOverridable" );
}
}
|
I get the following output:
|
Source code
|
1
2
3
4
5
6
7
8
|
BaseClass -> Foo
BaseClass -> FooOverridable
BaseClass -> Foo
DrvdClass -> FooOverridable
BaseClass -> Foo
DrvdClass -> FooOverridable
|
But if we try to do the same thing in Jabaco:
|
Jabaco Source
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Public Sub Form_Load()
Dim B As New BaseClass
B.Foo
Debug.Print vbCrLf
Dim D As New DrvdClass
D.Foo()
Debug.Print vbCrLf
B = D
B.Foo()
Debug.Print vbCrLf
End Sub
|
with the class BaseClass:
|
Jabaco Source
|
1
2
3
4
5
6
7
|
Public Sub Foo()
Debug.Print "BaseClass -> Foo"
FooOverridable()
End Sub
Public Sub FooOverridable() 'virtual 'Overridable
Debug.Print "BaseClass -> FooOverridable"
End Sub
|
and the class DrvdClass that has BaseClass as the SuperClass
(just type BaseClass in property-Editor field (SuperClass))
|
Jabaco Source
|
1
2
3
|
Public Sub FooOverridable()
Debug.Print "DrvdClass -> FooOverridable"
End Sub
|
we get the following output that is significantly different from the java output:
|
Source code
|
1
2
3
4
5
6
7
8
9
|
BaseClass -> Foo
BaseClass -> FooOverridable
*** Load DrvdClass
BaseClass -> Foo
BaseClass -> FooOverridable
BaseClass -> Foo
BaseClass -> FooOverridable
|
I must guess that the method FooOverridable never gets overridden.
Is it true?
How to override a method from superclass in Jabaco?
is there a certain neverdetected keyword in Jabaco?
Other languages use the keywords:
VB.net: Overridable, Override
C++, C#, Delphi: virtual; overrides
java: @Override
maybe an additional keyword is not necessary because it is clear that a method with the same name must be overridden by the derived class.
many regards
OlimilO