我有两个类,一个父类(super class)和一个子类。子类继承自父类(super class)。
父类(super class)重新定义了默认的 Matlab 函数 disp()
。但是,我希望子类“取消”此重新定义并返回使用默认的 Matlab 版本的 disp()
。有什么办法可以做到这一点吗?
我知道子类可以通过以下语法调用父类(super class)的方法
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'
提前致谢。
最佳答案
尝试使用builtin
因此,blah_sub
的定义如下:
classdef blah_sub < blah_super
properties
subprop = 'sub property';
end
methods
function disp(obj)
builtin('disp', obj);
end
end
end
关于matlab - 如何取消父类(super class)对默认 Matlab 函数的覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729906/