设计子类构造函数
显式地调用父类的构造函数
显式地调用每个超类构造函数从一个子类构造函数使您能够:
超类构造函数传递参数
MATLAB的顺序控制®调用父类构造函数
如果不显式地从子类构造函数调用父类构造函数,MATLAB隐式地调用这些不带参数的构造函数。超类构造函数必须支持任何参数语法支持隐式电话,和构造函数的调用顺序金宝app出现在类的顶部,从左到右。改变MATLAB调用构造函数的顺序或调用构造函数参数,调用超类构造函数显式地从子类的构造函数。
如果您没有定义一个子类构造函数,你可以调用父类的默认构造函数参数。有关更多信息,请参见默认构造函数和隐式继承的构造函数。
从子类调用父类的构造函数
调用子类的构造函数中的每个超类的构造函数,可以使用下面的语法:
obj@SuperClass1 (args…);
…
obj@SuperclassN (args…);
在哪里obj
子类的构造函数的输出,超类…
是一个超类的名字,arg游戏
各自的超类构造函数所需的任何参数。
例如,下面的类定义显示一个类调用股票
这是一个类的子类资产
。
classdef股票<资产方法函数s =股票(asset_args…)如果输入参数个数= = 0%给asset_args赋值结束%资产构造函数调用s@Assets (asset_args);…结束结束结束
子类的构造函数提供了关于创建子类的构造函数方法的更多信息。
引用父类中包含的包
如果一个超类包含在一个包,包括包名。例如,资产近
类是在金融
包:
classdef股票< finance.Assets方法函数s =股票(asset_args…)如果输入参数个数= = 0…结束%资产构造函数调用s@finance.Assets (asset_args);…结束结束结束
使用多个父类初始化对象
从多个父类派生一个类,子类初始化对象与每个超类构造函数调用:
classdef股票< finance.Assets& Taxable方法函数s =股票(asset_args tax_args,…)如果输入参数个数= = 0…结束%资产和成员类构造函数调用s@finance.Assets (asset_args) s@Taxable (tax_args)…结束结束结束
子类的构造函数实现
确保您的类构造函数支持零参数的语法,将默认值分配给输入参数变量在调用父类的构金宝app造函数之前。你不能conditionalize子类调用父类的构造函数。定位调用超类构造函数以外的任何条件代码块。
例如,股票
类构造函数不支持参数情况金宝app如果
声明,但外部的调用父类的构造函数如果
代码块。
classdef股票< finance.Assets属性NumShares象征结束方法函数s =股票(描述、numshares符号)如果输入参数个数= = = 0描述”;numshares = 0;符号=”;结束s@finance.Assets(描述);年代。NumShares = NumShares;年代。符号=符号;结束结束结束
只调用直接超类构造函数
从一个子类的构造函数调用唯一直接超类构造函数。例如,假设类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);结束结束结束