OOP Inheritance - Method Overriding etc

So, I’ve never come across this in Xojo (not sure if in any other language actually).

The behaviour I’m encountering is the following:

Child class’ MethodC calls Super.MethodA. So, I expected “This is the Father” to show (since I’m calling the Super and I thought it would call the MethodB in the same level of the hierarchy) but “This is the Child” shows instead. Is this the normal OOP behavior and I never came across or languages diverge on this behavior?

PS Only MethodB is overriden in ChildClass.

- MethodA {
-MethodB {
   MsgBox("This is the Father")
- MethodC {

- MethodB {
   MsgBox("This is the Child")

No, this is correct behavior in any OOP language.

MethodB is overridden in ChildClass, so any instance of ChildClass will call this method – via MethodA – and show “This is the Child”. Which is correct as any instance of ChildClass should of course show “This is the Child”. Google for “Virtual function” and “Polymorphism”.

This looks normal to me for any OOP language. Dispatch is not to the same level of the hierarchy. Each new method dispatch starts at the first found child implementation.

Ok, that’s what I found out as well. Never really had paid attention…