我需要知道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。有办法做到这一点吗?
你应该能够做到:
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
。所以AA
和B
都必须实施foo
。你还将A
标记为HandleCompatible
,这意味着子类可以是句柄。
然后AA
继承A
和handle
,但B
只继承A
并且是一个价值类。两者都实施foo
。
请注意,您可能需要注意在每个类中实现foo的方式,因为必需的函数签名可以在句柄类和值类之间变化。