首页 文章

句柄和非句柄子类的抽象超类

提问于
浏览
1

我需要知道matlab中是否有一种方法可以为句柄和非句柄子类定义接口超类?如果在层次结构中有一个句柄类,则所有类也必须处理,并且在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

    你应该能够做到:

    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
    

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

    然后 AA 继承自 Ahandle ,但 B 仅从 A 继承并且是值类 . 两者都实现 foo .

    请注意,您可能需要注意在每个类中实现foo的方式,因为必需的函数签名可以在句柄类和值类之间变化 .

相关问题