Matlab子类化问题

时间:2009-04-17 22:01:07

标签: oop matlab

关于matlab中子类化的问题,在新的类系统下。我有一些带有一些受保护属性的A类:

classdef Table < Base

properties (SetAccess = protected, GetAccess = public)
    PropA = [];
end %properties

我想创建一个具有一些专门功能的子类,并进一步限制对PropA的访问。 (即在子类中使访问变为私有)。我的第一个想法是:

classdef subTable < Table

...
methods (Access = private)
    out = get.PropA(obj, value);
end %private methods

但是,在帮助中它说:“您必须在不指定属性的方法块中定义属性访问方法。”这个想法太多了。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我不相信这是可能的。来自MATLAB Documentation

只有两个条件允许您重新定义超类属性:

  • 超类属性Abstract属性设置为true
  • 超类属性将SetAccess和GetAccess属性都设置为private

我认为这样做不是一个好主意。它违反了Liskov Substitution Principle。为接受表而编写的函数也应该能够接受一个subTable并正常工作。如果此类函数访问了PropA,则在传递subTable时会失败。