【问题标题】:Matlab subclassing questionMatlab子类化问题
【发布时间】:2010-10-20 05:29:06
【问题描述】:

关于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

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

有什么想法吗?

【问题讨论】:

    标签: oop matlab


    【解决方案1】:

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

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

    • 超类属性 Abstract 属性设置为 true
    • 超类属性的 SetAccess 和 GetAccess 属性都设置为私有

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

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2017-05-07
      • 2011-03-19
      相关资源
      最近更新 更多