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 类继承的类。

这是一个具体的例子。我有两个类,定义如下:

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 回答