处理和非处理子类的抽象超类

时间:2018-09-14 09:05:20

标签: matlab interface abstract handle

我需要知道在matlab中是否可以为句柄和非句柄子类定义接口超类?如果在层次结构中有一个handle类,则所有类也必须也是handle,并且在matlab中,接口被定义为抽象类。因此,无法通过这种方式完成。

class A < handle
....
end

class AA < A
....
    methods 
        function foo
        end
    end
end

class B
....
    methods
        function foo
    end
end

我想使用AA类(句柄)和B类(非句柄)创建某种容器,以确保它们都具有函数foo。有办法吗?

1 个答案:

答案 0 :(得分:0)

您应该能够:

classdef (Abstract, HandleCompatible) A
    methods (Abstract)
        function foo
    end
end

classdef AA < A & handle
    methods
        function foo
        ...
        end
    end
end

classdef B < A
    methods
        function foo
        ...
        end
    end
end

在这里,您使用抽象方法AAbstract标记为foo。因此AAB必须都实现foo。您还可以将A标记为HandleCompatible,这意味着子类可以是句柄。

然后AAAhandle都继承,但是B仅从A继承并且是一个值类。两者都实现foo

请注意,您可能需要注意在每个类中实现foo的方式,因为句柄和值类之间的必要函数签名可能会有所不同。

相关问题