[Gambas-user] Overriding Color class

Benoît Minisini g4mba5 at gmail.com
Tue Oct 27 19:07:51 CET 2020


Le 18/10/2020 à 01:21, Bruce a écrit :
> On 18/10/20 9:37 am, Benoît Minisini wrote:
>> Le 18/10/2020 à 01:02, Bruce a écrit :
>>> So, this is no longer true:
>>>
>>> 4.4. Project symbol table
>>> Your project has its own private symbol, like any component, and can 
>>> export any of its classes to the global symbol table by using the 
>>> EXPORT keyword.
>>> The project classes are loaded after all components. So your exported 
>>> class can override any exported classes declared in any component.
>>>
>>> ?
>>> b
>>>
>>
>> You must take chapter 3.5 into account too.
>>
> 
> A read/write property must be overridden by a read/write property.
> A read-only property must be overridden by a read-only property.
> 
> Why? 

Because of dynamic inheritance and symbol dispatching.

if class B inherits class A while overriding the X property, then a 
reference on a class A object may be actually a reference on a class B 
object, and so the public interface cannot change because of the 
inheritance.

Inheritance is not solved statically at compilation time, but 
dynamically at runtime. So the compiled bytecode may assume 
possibilities on a symbol dispatching that a later 
inheritance/overriding like you want to do will break.

This is a Gambas object model limitation.

Regards,

-- 
Benoît Minisini


More information about the User mailing list