构造函数

一个构造是在一个被创建对象的实例时调用类的特殊方法。它是一个接受输入参数的常规 MATLAB 函数,但它也必须遵循某些规则

由于 MATLAB 创建了默认构造函数,因此不需要构造函数。然而,在实践中,这是一个定义对象状态的地方。例如,可以通过指定属性来限制属性 。然后,构造函数可以 initalize通过这实际上可通过构造的输入参数发送默认的或用户定义的值这样的性质。

调用一个简单类的构造函数

这是一个简单的类 Person

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

构造函数的名称与类的名称相同。因此,构造函数由其类的名称调用。可以按如下方式创建类 Person

>> p = Person('John','Smith','London')
p = 
  Person with properties:

       name: 'John'
    surname: 'Smith'
    address: 'London'

调用子类的构造函数

如果共享公共属性或方法,则可以从父类继承类。当一个类从另一个继承时,很可能必须调用父类的构造函数。

Member 继承自 Person 类,因为 Member 使用与 Person 类相同的属性,但它也将 payment 添加到其定义中。

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

与类 Person 类似,Member 是通过调用其构造函数创建的:

>> m = Member('Adam','Woodcock','Manchester',20)
m = 
  Member with properties:

    payment: 20
       name: 'Adam'
    surname: 'Woodcock'
    address: 'Manchester'

Person 的构造函数需要三个输入参数。Member 必须尊重这个事实,因此用三个参数调用类 Person 的构造函数。它符合以下条件:

obj = obj@Person(name,surname,address);

上面的示例显示了子类需要其父类的信息的情况。这就是 Member 的构造函数需要四个参数的原因:三个参数用于父类,一个参数用于自身。