从子类构造函数显式调用每个超类构造函数可以:
将参数传递给超类构造函数
控制MATLAB中的顺序®调用超类构造函数
如果你没有从子类构造函数中显式地调用超类构造函数,MATLAB会隐式地不带参数地调用这些构造函数。超类构造函数必须支持无参数语法来支持隐式调用。金宝app
当有多个超类时,MATLAB不保证任何特定的调用顺序。如果MATLAB调用超类构造函数的顺序很重要,那么从子类构造函数显式调用超类构造函数。
如果没有定义子类构造函数,可以使用超类参数调用默认构造函数。有关更多信息,请参见默认构造函数和隐式调用继承的构造函数.
要调用子类构造函数中每个超类的构造函数,请使用以下语法:
obj@SuperClass1 (args…);
...
obj@SuperclassN (args…);
在哪里obj
是子类构造函数的输出,超类…
超类的名称,和arg游戏
是各自的超类构造函数所需的任何参数。
例如,类定义的下面部分显示了调用的类股票
它是一个叫做资产
.
classdef股票<资产方法函数s =股票(asset_args...)如果输入参数个数= = 0%赋值给asset_args结束调用资产构造函数s@Assets (asset_args);...结束结束结束
子类的构造函数提供有关创建子类构造函数方法的更多信息。
如果超类包含在包中,请包含包名。例如,资产近
类在金融
包:
classdef<股票融资。资产方法函数s =股票(asset_args...)如果输入参数个数= = 0...结束调用资产构造函数s@finance.Assets (asset_args);...结束结束结束
要从多个超类派生一个类,调用每个超类构造函数初始化子类对象:
classdef<股票融资。资产&应税方法函数s =股票(asset_args tax_args,...)如果输入参数个数= = 0...结束%调用资产和成员类构造函数s@finance.Assets (asset_args) s@Taxable (tax_args)...结束结束结束
要确保类构造函数支持零参数语法,请在调用超类构造函数之前为输入参数变量指定默金宝app认值。不能将子类调用条件化为超类构造函数。定位对任何条件代码块之外的超类构造函数的调用。
例如,股票
类的构造函数支持无参数情况金宝app如果
语句,但调用超类构造函数如果
代码块。
classdef<股票融资。资产属性NumShares象征结束方法函数s =股票(描述、numshares符号)如果Nargin == 0 description ='';numshares = 0;符号='';结束s@finance.Assets(描述);s.NumShares = numshares;s.Symbol =符号;结束结束结束
只从子类构造函数调用直接超类构造函数。例如,假设类B
来源于类一个
和类C
来源于类B
.类的构造函数C
不能调用类的构造函数一个
初始化属性。类B
必须初始化类一个
属性。
下面是类的实现一个
,B
,C
演示如何在每个类中设计这种关系。
类一个
定义属性x
和y
,但只赋值给x
:
classdef一个属性x y结束方法函数obj = (x)...obj。x= x;结束结束结束
类B
继承属性x
和y
从类一个
.类B
构造函数调用类一个
构造函数来初始化x
然后赋值给y
.
classdefB <方法函数obj = B (x, y)...obj@A (x);obj。y= y;结束结束结束
类C
接受属性的值x
和y
,并将这些值传递给类B
构造函数,然后调用类一个
构造函数:
classdefC < B方法函数obj = C (x, y)...obj@B (x, y);结束结束结束