A constructor is a special method in a class that is called when an instance of an object is created. It is a regular MATLAB function that accepts input parameters but it also must follow certain rules.
Constructors are not required as MATLAB creates a default one. In practice, however, this is a place to define a state of an object. For example, properties can be restricted by specifying attributes. Then, a constructor can initalize such properties by default or user defined values which in fact can sent by input parameters of a constructor.
Calling a constructor of a simple class
This is a simple class
classdef Person properties name surname address end methods function obj = Person(name,surname,address) obj.name = name; obj.surname = surname; obj.address = address; end end end
The name of a constructor is the same the name of a class. Consequently, constructors are called by the name of its class. A class
Person can be created as follows:
>> p = Person('John','Smith','London') p = Person with properties: name: 'John' surname: 'Smith' address: 'London'
Calling a constructor of a child class
Classes can be inherited from parent classes if the share common properties or methods. When a class is inherited from another, it is likely that a constructor of a parent class has to be called.
Member inherits from a class
Member uses the same properties as the class Person but it also adds
payment to its definition.
classdef Member < Person properties payment end methods function obj = Member(name,surname,address,payment) obj = obj@Person(name,surname,address); obj.payment = payment; end end end
Similarly to the class
Member is created by calling its constructor:
>> m = Member('Adam','Woodcock','Manchester',20) m = Member with properties: payment: 20 name: 'Adam' surname: 'Woodcock' address: 'Manchester'
A constructor of
Person requires three input parameters.
Member must respect this fact and therefore call a constructor of the class
Person with three parameters. It is fulfilled by the line:
obj = obj@Person(name,surname,address);
The example above shows the case when a child class needs information for its parent class. This is why a constructor of
Member requires four parameters: three for its parent class and one for itself.