【发布时间】: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
我需要在 MATLAB 2014b 中创建 Patch 对象类的子类,但 MATLAB 不允许我这样做:
Class 'matlab.graphics.primitive.Patch' is Sealed and may not be used as a superclass.
这方面有什么技巧吗?
【问题讨论】:
标签: matlab matlab-class
没有。如果类是密封的,则不应派生自。选择将其密封可能有充分的理由;如果您要从该类继承,其他类可能会采用您可以覆盖的特定实现。
【讨论】:
不 - 你不能继承 Sealed 的类,而 matlab.graphics.primitive.Patch 是一个内置类,所以你不能进行(hack)编辑来解封它。
您可以做的最好的事情是使用适配器模式 - 创建您自己的类,将 Patch 存储为私有(可能是隐藏)属性,然后包装它的所有属性和您自己的属性,实现 @987654324 @ 和 get 方法将值传递到底层 Patch 或从底层 Patch 传递值。对您需要的Patch 的任何方法执行类似的操作。您可能还需要监听Patch 上的属性更改事件并做出适当的响应。
然后您也可以添加自己的方法,和/或根据需要修改现有方法和属性行为。
【讨论】:
java 对象等)。我实际上已经实现了您的建议,但就像我说的那样,我想知道是否有更通用的方法来实现相同的结果。