[Gambas-user] class

Shane buster6seven at ...626...
Fri Feb 17 04:28:24 CET 2017


I think this is my problem


      3.4. Inheritance and constructor

Contrary to all the object language I know, each class in the 
inheritance hierarchy consumes the parameters passed to the constructor.

Let's suppose we have the following inheritance tree:

|MyListBox ---inherits--> ListBox ---inherits---> Control |

  *

    Control <http://gambaswiki.org/wiki/comp/gb.gtk/control>._new() does
    not exist.

  *

    ListBox <http://gambaswiki.org/wiki/comp/gb.qt4/listbox>._new()
    takes one parameter: the parent control.

  *

    MyListBox._new() takes one parameter: a name - It is just an example.

So |NEW <http://gambaswiki.org/wiki/lang/new> MyListBox| will take two 
parameters.

  *

    The first will be sent to ListBox
    <http://gambaswiki.org/wiki/comp/gb.qt4/listbox>._new().

  *

    The second to MyListBox._new().

Be careful: the ListBox 
<http://gambaswiki.org/wiki/comp/gb.qt4/listbox>._new() will be called 
first, so that you are sure that the ListBox 
<http://gambaswiki.org/wiki/comp/gb.qt4/listbox> control exists when you 
are in MyListBox._new().

Then you will create a MyListBox control this way:

hMyListBox *=* *New* *MyListBox**(*hContainer*,* "Name"*)*

So the order of arguments is the following:

  *

    Mandatory arguments are consumed first, and then optional arguments
    if they are available.

  *

    The arguments of elder classes are specified first.

In Gambas 2.0, the order or arguments were reversed!

For example, if you have the following inheritance:

|MyForm --> Form --> Window |

with the MyForm constructor being:

|Sub _new(FirstArg As String, SecondArg as Integer, Optional ThirdArg As 
Integer) |

Note: the Form <http://gambaswiki.org/wiki/comp/gb.qt4/form> constructor 
takes no argument, and the Window 
<http://gambaswiki.org/wiki/comp/gb.qt4/window> constructor takes an 
optional parent argument.

The signature of the final constructor will be:

|New MyForm(FirstArg As String, SecondArg As Integer, Optional Parent As 
Control, Optional ThirdArg As Integer) |

In a more general way, the order of arguments for a three level 
inheritance tree is:

  *

    Mandatory arguments of the grand-parent constructor.

  *

    Mandatory arguments of the parent constructor.

  *

    Mandatory arguments of the final constructor.

  *

    Optional arguments of the grand-parent constructor.

  *

    Optional arguments of the parent constructor.

  *

    Optional arguments of the final constructor.


On 17/02/17 13:55, Benoît Minisini wrote:
> Le 17/02/2017 à 03:08, Shane a écrit :
>> Looks Like Pic1
>>
>> and then pic2
>>
>>
>>
> Which version of Gambas do you use?
>




More information about the User mailing list