# Inheritance

`INHERITS ParentClass`

Put this on the beginning of a class file to tell Gambas that the current class inherits the ParentClass class.

What is inherited ?

The class inherits from its parent every method, property, constant and event.

Which class can be a parent class ?

You can inherited any class, even a native one!

For example, you can create a custom `MyListBox` class that inherits ListBox but allows association a tag with each list item.

Note that you can't use `INHERITS` in a form class file, because forms already inherits the Form class!

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._new()` does not exist.
- `ListBox._new()` takes one parameter: the parent control.
- `MyListBox._new()` takes one parameter: a name - It is just an example.

So `NEW MyListBox()` will take two parameters. The first will be sent to `MyListBox._new()`, the second to `ListBox._new()`. But the `ListBox._new()` will be called first. This way, you are sure that the `ListBox` control exists when you are in `MyListBox._new()`.

You will create a `MyListBox` control this way:

    aMyListBox = NEW MyListBox ( "Name", aContainer )