构造函数
一个构造是在一个被创建对象的实例时调用类的特殊方法。它是一个接受输入参数的常规 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
的构造函数需要四个参数的原因:三个参数用于父类,一个参数用于自身。