3

私は次のような単純なクラス構造を持っています:

classdef super < hgsetget
    properties(Constant = true, Access = private)
        PROP1 = 1;
        PROP2 = {2 [3 4] [5 6]};
    end

    methods
        function self = super()
            // Constructor code here
            // ...
        end
    end
end

その後、そのようなサブクラスによって継承されます。

classdef sub < super
    properties
        PROP3 = 7;
    end

    methods
        function self = sub()
            // Subclass constructor here
            // ...
            self = self@super();
            test = self.PROP1; // I don't appear to have access to PROP1 from Super

        end
    end
end

私の問題は、スーパーのプロパティにアクセスしようとしたとき、PROP1またはPROP2アクセスできないように見えるときです。

クラスsubに適切なメソッド、プロパティ、またはフィールドPROP1がありません。

Matlab内のスーパーのプロパティにアクセスする方法はありますか?

4

2 に答える 2

7

スーパークラスsuperでは、プロパティ属性をに設定します

properties(Constant = true, Access = protected)

ドキュメントから、アクセス属性によって、これらのプロパティにアクセスできるコードが決まります。

  • public —無制限のアクセス
  • 保護—1つまたは複数のクラスのメソッドからのアクセス
  • private —クラスメソッドのみによるアクセス(サブクラスからではない)
于 2013-03-20T23:43:29.557 に答える
2

プロパティをとして定義しますprivate。これらは継承されません。

Access = protected代わりに使用してください。

于 2013-03-20T23:37:53.513 に答える