【问题标题】:inheriting from MATLAB graphics objects从 MATLAB 图形对象继承
【发布时间】:2015-05-24 04:32:40
【问题描述】:

我需要在 MATLAB 2014b 中创建 Patch 对象类的子类,但 MATLAB 不允许我这样做:

Class 'matlab.graphics.primitive.Patch' is Sealed and may not be used as a superclass.

这方面有什么技巧吗?

【问题讨论】:

    标签: matlab matlab-class


    【解决方案1】:

    没有。如果类是密封的,则不应派生自。选择将其密封可能有充分的理由;如果您要从该类继承,其他类可能会采用您可以覆盖的特定实现。

    【讨论】:

      【解决方案2】:

      不 - 你不能继承 Sealed 的类,而 matlab.graphics.primitive.Patch 是一个内置类,所以你不能进行(hack)编辑来解封它。

      您可以做的最好的事情是使用适配器模式 - 创建您自己的类,将 Patch 存储为私有(可能是隐藏)属性,然后包装它的所有属性和您自己的属性,实现 @987654324 @ 和 get 方法将值传递到底层 Patch 或从底层 Patch 传递值。对您需要的Patch 的任何方法执行类似的操作。您可能还需要监听Patch 上的属性更改事件并做出适当的响应。

      然后您也可以添加自己的方法,和/或根据需要修改现有方法和属性行为。

      【讨论】:

      • 是的,这些想法是我最初想到的一些事情。但我想知道是否会有一种(整洁的)未记录的方式来规避这个限制(例如,通过访问底层的 java 对象等)。我实际上已经实现了您的建议,但就像我说的那样,我想知道是否有更通用的方法来实现相同的结果。
      • 很遗憾没有,我不知道。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2011-10-08
      • 2011-06-12
      • 1970-01-01
      • 2013-01-04
      • 2019-01-30
      相关资源
      最近更新 更多