主要内容

设计子类构造函数

明确致电超类构造函数

从子类构造函数显式调用每个超类构造函数可以:

  • 将参数传递给超类构造函数

  • 控制MATLAB中的顺序®调用超类构造函数

如果你没有从子类构造函数中显式地调用超类构造函数,MATLAB会隐式地不带参数地调用这些构造函数。超类构造函数必须支持无参数语法来支持隐式调用。金宝app

当有多个超类时,MATLAB不保证任何特定的调用顺序。如果MATLAB调用超类构造函数的顺序很重要,那么从子类构造函数显式调用超类构造函数。

如果您未定义子类构造函数,则可以调用具有超类参数的默认构造函数。有关更多信息,请参阅默认构造函数隐式调用继承的构造函数

从子类调用超类构造函数

要调用子类构造函数中每个超类的构造函数,请使用以下语法:

obj @ supercrass1(args,......);

...

obj@SuperclassN (args…);

在哪里obj是子类构造函数的输出,超类…超类的名称,和arg游戏是各自的超类构造函数所需的任何参数。

例如,类定义的下面部分显示了调用的类股票它是一个叫做资产

classdef股票<资产方法功能s =股票(asset_args...如果nargin == 0.%将值分配给Asset_args结束%呼叫资产构造函数s @资产(Asset_args);...结束结束结束

子类的构造函数提供有关创建子类构造函数方法的更多信息。

引用包中包含的超类

如果包装中包含超类,则包括包名称。例如,资产近类在金融包:

classdef<股票融资。资产方法功能s =股票(asset_args...如果nargin == 0....结束%呼叫资产构造函数s@finance.Assets (asset_args);...结束结束结束

使用多个超类初始化对象

要从多个超类派生一个类,调用每个超类构造函数初始化子类对象:

classdef<股票融资。资产&应税方法功能s =股票(asset_args tax_args,...如果nargin == 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演示如何在每个类中设计这种关系。

一个定义属性xy,但只赋值给x

classdef一个特性x y结束方法功能obj = (x)...obj。x= x;结束结束结束

B继承属性xy从类一个.类B构造函数调用类一个构造函数来初始化x然后分配值y

classdefB 方法功能obj = B (x, y)...obj @ a(x);obj.y = y;结束结束结束

C接受属性的值xy,并将这些值传递给类B构造函数,然后调用类一个构造函数:

classdefC 方法功能obj = C (x, y)...obj @ b(x,y);结束结束结束

相关话题