gpt4 book ai didi

matlab - 如何取消父类(super class)对默认 Matlab 函数的覆盖

转载 作者:行者123 更新时间:2023-12-04 04:42:05 26 4
gpt4 key购买 nike

我有两个类,一个父类(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com