Concept

Constructor


Description

A special method that is called automatically when an object is first created (instantiated).

Usage

Constructor [parameter list]

Part

Type

Description

Parameter List

Any

Optional list of parameters.

Notes

When you create a new object, you will sometimes want to perform some sort of initialization on the object. The Constructor is a mechanism for doing this. A class's Constructor is the method that will be executed automatically when an instance of the class is created.

You write a Constructor for a custom class by creating a new method for the class and naming it “Constructor”. The drop-down list for the Method name field suggests this name and the names of all other methods that can be overridden.

When you create a Constructor for any subclass, the Code Editor automatically inserts code that calls the Constructor for its super class using the Super keyword. If there is more than one Constructor, it inserts calls to all of them. This is because the subclass's Constructor overrides its super class's Constructor but the new subclass may not initialize itself correctly without a call to the super class's Constructor. You can edit the inserted calls in the event that this assumption is incorrect.

Classes that have constructors have a section that uses the syntax for each Constructor.


Private and protected constructors

Sometimes it is helpful to create a class that cannot be instantiated so that it can be used as a base for other classes. This is called an "abstract" class. You can do this in Xojo by adding a single Constructor with no parameters to the base class and setting its scope to Private. Subclasses of the base class get their own public Constructor, but you will be unable to instantiate the base class.

You can also set a Constructor to Protected in order to force the subclass to implement/override the Constructor in order for it to be instantiated.

To summarize the differences: * Protected: The subclass must override the Constructor in order to be instantiated * Private: The base class cannot be instantiated; subclasses get a standard public Constructor and can be instantiated

Sample code

This code creates a DateTime object and sets it to 15 April, 2018.

Var d As New DateTime(2018, 4, 15)

The following code is from the example project Custom Drag in the Examples folder. The main window consists of a DesktopLabel control and a DesktopTextArea. The user can drag the text in the DesktopLabel into the DesktopTextArea. This is not possible by default but the ability to drag the text is enabled by the code in the MouseDown event of the DesktopLabel. It is:

Var d As DragItem
d = New DragItem(Self, Me.Left, Me.Top, Me.Width, Me.Height)
d.Text = Me.Value
d.Drag

The following code creates a new FolderItem. You can create a copy of a FolderItem by passing the FolderItem to be copied to the Constructor. The result is a copy of the passed FolderItem rather than a reference to it.

Var f, f2 As FolderItem
f = SpecialFolder.Desktop.Child("MyDocument")
f2 = New FolderItem(f)

The following code creates a new Picture instance that has an alpha channel (i.e., a transparency parameter).

Var width  As Integer = 2000
Var height As Integer = 2000

// creates new picture
Var pic As New Picture(width, height)

This Constructor creates a Picture object that will mirror the content that is drawn into a Canvas in its Paint event.

p = New Picture(Canvas1.Width, Canvas1.Height)

Compatibility

All project types on all supported operating systems.

See also

Super keyword; Destructor, Constructors and Destructors topics