2

スーパークラスとサブクラスの 2 つのクラスがあります。サブクラスはスーパークラスを継承しています。

スーパークラスは、デフォルトの Matlab 関数を再定義しますdisp()。ただし、サブクラスでこの再定義を「キャンセル」して、既定の Matlab バージョンのdisp(). これを行う方法はありますか?

サブクラスが次の構文を介してスーパークラスのメソッドを呼び出すことができることを知っています

function result = CallTheSuperClassMethod(obj, arg1, arg2)
  result = TheSuperClassMethod@TheSuperClass(obj, arg1, arg2)
end

しかし、次のような方法でMatlabのデフォルトメソッドを呼び出す方法はありますか:

function result = CallTheDefaultMethod(obj, arg1, arg2)
  result = SomeMethod@DefaultClass(obj, arg1, arg2)
end

DefaultClassここで、それがすべての Matlab クラスの継承元のクラスであると想定しています。

これが具体的な例です。次のように定義された 2 つのクラスがあります。

classdef blah_super
  properties
    superprop = 'super property';
  end

  methods
    function disp(obj)
      disp('super');
    end
  end
end

classdef blah_sub < blah_super
  properties
    subprop = 'sub property';
  end
end

以下は、私が取得したいくつかのコマンドの結果です。

>> a = blah_super

a = 

super

>> b = blah_sub

b = 

super

blah_subしかし、何らかの方法で ( から継承しながら)変更したいblah_superので、結果は次のようになります。

>> b = blah_sub

b = 

  blah_sub with properties:

      subprop: 'sub property'
    superprop: 'super property'

前もって感謝します。

4

1 に答える 1

3

使ってみてbuiltin

したがって、 の定義は次のblah_subようになります。

classdef blah_sub < blah_super
  properties
    subprop = 'sub property';
  end

  methods
    function disp(obj)
      builtin('disp', obj);
    end
  end
end
于 2013-09-10T22:56:45.337 に答える