0

オブジェクトのスーパークラスに割り当てるにはどうすればよいでしょうか?

例:

classdef foo < bar
...
  methods
    function this = barSet(this,b)
      % Here I want to arrange that bar(this) == b
    end
  end
end

どのように(または)実装できbarSetますか?

4

1 に答える 1

0

基本クラスをいじる場合は、 @-syntax を使用する必要があります (詳細については、こちらを参照してください)。例えば:

classdef foo < bar
...
  methods
    function this = barSet(this,b)
        %# call method in bar
        barSet@bar(this, b);
        ...
    end
  end
end

メソッドは と の両方のメソッドbarSetです。foobar

これは、オーバーロードされたメソッドを拡張する Matlab の方法です: でbarSet(this,b)定義を省略するとfoo

F = foo;
F.barSet(5);

引数barSetでクラスのメソッドを呼び出します。それを定義すると、メソッドはまったく別のことを行うことができます。または、最初に のバージョンが行うことを行い、その後により特殊化された処理 (上で として記述) を実行できます。bar5bar'...'

今、これはまったく役に立ちますか?あなたが何を望んでいるのか、私には完全には明らかではないからです。あなたが何を意味するのか理解できませんbar(this) == b--またはbのインスタンスですか? とはどういう意味ですか? コピーコンストラクタ?つまり、インスタンスをインスタンスで上書きしたいということを正しく理解していますか?foobarbar(this)thisb

于 2012-10-05T16:11:40.060 に答える