句柄和非句柄子类的抽象超类
Abstract superclass for both handle and non-handle subclass
我想知道在 matlab 中是否有办法为 handle 和非 handle subclass 定义接口 superclass?如果在层次结构中有句柄 class,所有 classes 也必须是句柄,在 matlab 中接口被定义为抽象 class。所以不能这样做。
class A < handle
....
end
class AA < A
....
methods
function foo
end
end
end
class B
....
methods
function foo
end
end
我想创建某种带有 classes 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
在这里,您使用抽象方法 foo
将 A
标记为 Abstract
。所以 AA
和 B
都必须实现 foo
。您还将 A
标记为 HandleCompatible
,这意味着 subclasses 可以是句柄。
那么AA
同时继承了A
和handle
,但是B
只继承了A
并且是一个值class。两者都实现 foo
.
请注意,您可能需要注意在每个 class 中实现 foo 的方式,因为必要的函数签名在句柄和值之间可能会有所不同 classes。
我想知道在 matlab 中是否有办法为 handle 和非 handle subclass 定义接口 superclass?如果在层次结构中有句柄 class,所有 classes 也必须是句柄,在 matlab 中接口被定义为抽象 class。所以不能这样做。
class A < handle
....
end
class AA < A
....
methods
function foo
end
end
end
class B
....
methods
function foo
end
end
我想创建某种带有 classes 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
在这里,您使用抽象方法 foo
将 A
标记为 Abstract
。所以 AA
和 B
都必须实现 foo
。您还将 A
标记为 HandleCompatible
,这意味着 subclasses 可以是句柄。
那么AA
同时继承了A
和handle
,但是B
只继承了A
并且是一个值class。两者都实现 foo
.
请注意,您可能需要注意在每个 class 中实现 foo 的方式,因为必要的函数签名在句柄和值之间可能会有所不同 classes。