我有两个类,一个超类和子类。子类继承自超类。
超类重新定义了默认的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'
提前致谢。
答案 0 :(得分:3)
尝试使用builtin
所以blah_sub
的定义是这样的:
classdef blah_sub < blah_super
properties
subprop = 'sub property';
end
methods
function disp(obj)
builtin('disp', obj);
end
end
end