【问题标题】:Nested class to access other nested class' property嵌套类访问其他嵌套类的属性
【发布时间】:2019-03-12 11:11:55
【问题描述】:

我正在寻找一个 MATLAB 解决方案,其中一个嵌套子类可以访问另一个嵌套子类的属性。

在下面的例子中,超类有两个属性,每个属性都被初始化为两个不同的子类:

classdef superclass

  properties
    prop1
    prop2
  end

  methods

    function obj = superclass()
       obj.prop1 = subclass1;
       obj.prop2 = subclass2;
    end

  end
end

第一个子类具有属性 a:

 classdef subclass1

    properties
      a
    end

 end

第二个子类具有属性 b 和一个使用子类 1 的属性 a 的方法 calcSomething:

 classdef subclass2

    properties
      b
    end

    methods
      function result = calcSomething(obj)
        result = obj.b * superclass.prop1.a;
      end
    end

 end

如何表达 superclass.prop1.a 以从 subclass2 中正确获取此属性?

谢谢! :)

PS 我不确定我对 superclasssubclass 这两个词的使用是否完全正确,因为我没有说明

subclass < superclass

也许母子的概念会更方便..?!

【问题讨论】:

  • prop1 不知道superclass 也不知道包含它的那个类的对象。你可以明确地给它这个知识,但这会很奇怪。让这个方法成为superclass 的一部分会更合乎逻辑,这是唯一知道这两个属性的类。
  • 感谢@CrisLuengo 的快速回答!是的,你可能是对的。 superclass 知道这两个属性,因此方法 calcSomething 应该位于超类中...

标签: matlab oop nested children class-properties


【解决方案1】:

Soo,遵循superclass 的主要结构(不会更改),方法calcSomething 现在将位于superclass 内部:

classdef superclass
   properties
      prop1 = subclass1
      prop2 = subclass2
   end

   methods
      function result = calcSomething(obj)
         result = obj.prop1.a * obj.prop2.b;
      end
   end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-12
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多