我需要知道在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。有办法吗?
答案 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
在这里,您使用抽象方法A
将Abstract
标记为foo
。因此AA
和B
必须都实现foo
。您还可以将A
标记为HandleCompatible
,这意味着子类可以是句柄。
然后AA
从A
和handle
都继承,但是B
仅从A
继承并且是一个值类。两者都实现foo
。
请注意,您可能需要注意在每个类中实现foo的方式,因为句柄和值类之间的必要函数签名可能会有所不同。