【问题标题】:Assignment to a superclass分配给超类
【发布时间】:2012-10-05 15:10:12
【问题描述】:

如何分配给对象的超类?

例子:

classdef foo < bar
...
  methods
    function this = barSet(this,b)
      % Here I want to arrange that bar(this) == b
    end
  end
end

我如何(或可以)实现barSet

【问题讨论】:

    标签: matlab matlab-class


    【解决方案1】:

    当弄乱基类时,你应该使用@-syntax(阅读它here)。例如:

    classdef foo < bar
    ...
      methods
        function this = barSet(this,b)
            %# call method in bar
            barSet@bar(this, b);
            ...
        end
      end
    end
    

    方法barSetfoobar 中的一个方法。

    这是Matlab扩展重载方法的方式:如果你在foo中省略了barSet(this,b)的定义,调用

    F = foo;
    F.barSet(5);
    

    将使用参数5 调用bar 类中的方法barSet。如果您定义它,该方法可以完全做其他事情,或者首先bar 中的版本所做的事情,然后是更专业的东西(上面写为'...')。

    现在这有帮助吗?因为我并不完全清楚你想要什么。我不明白你所说的bar(this) == b 是什么意思——bfoobar 的一个实例吗? bar(this) 是什么意思?复制构造函数?那么我是否正确理解您的意思是您想用b 实例覆盖this 实例?

    【讨论】:

    • 感谢您查看此内容。您的建议要求我修改超类 bar 以添加方法 barSet。我宁愿避免以这种方式弄乱超类。我所说的 bar(this) (在 bar(this) == b 中)的意思是将 this 转换为 bar 类。同样,b 应该属于 bar 类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多