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

问题描述 投票:1回答: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。有办法做到这一点吗?

matlab interface abstract handle
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

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

然后AA继承Ahandle,但B只继承A并且是一个价值类。两者都实施foo

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

© www.soinside.com 2019 - 2024. All rights reserved.