このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
サブクラスコンストラクターから各スーパークラスコンストラクターを明示的に呼び出すと,次のことを実行できます。
スーパークラスコンストラクターに引数を渡す
MATLAB®がスーパークラスコンストラクターを呼び出す順序を制御する
サブクラスコンストラクターからスーパークラスコンストラクターを明示的に呼び出さない場合は,MATLABによって,これらのコンストラクターが引数なしで暗黙的に呼び出されます。スーパークラスコンストラクターは,暗黙的な呼び出しをサポートするために引数のない構文に対応していなければなりません。
複数のスーパークラスがある場合,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)...结束结束结束
クラスコンストラクターでゼロ引数の構文が必ずサポートされるようにするには,スーパークラスコンストラクターを呼び出す前に入力引数変数に既定値を代入します。スーパークラスコンストラクターのサブクラス呼び出しには条件を付けられません。条件付きコードブロックの外にスーパークラスコンストラクターへの呼び出しを配置します。
次の例では,股票
クラスコンストラクターは如果
ステートメントで引数なしのケースをサポートしますが,スーパークラスコンストラクターを如果
コードブロック外で呼び出します。
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
のコンストラクターに渡します。クラスB
のコンストラクターは,次にクラス一个
のコンストラクターを呼び出します。
classdefC < B方法函数obj = C (x, y)...obj@B (x, y);结束结束结束