Main Content

継承プロパティの変更

スーパークラス プロパティの変更

次のいずれかの条件が成立する場合に、スーパークラスのプロパティを再定義できます。

  • スーパークラスのプロパティの Abstract 属性が true の場合

  • スーパークラスのプロパティの SetAccess 属性と GetAccess 属性が private の場合

スーパークラスがプロパティを抽象として定義する場合、サブクラスはこのプロパティの具象バージョンを実装するか、またはサブクラスも抽象でなければなりません。スーパークラスは、サブクラス間で一貫したインターフェイスを作成するための抽象プロパティを定義します。

スーパークラスがプライベート アクセスをもつプロパティを定義する場合は、そのスーパークラスだけがこのプロパティにアクセスできます。サブクラスは同じ名前の別のプロパティを実装できます。

メソッドではプライベートのローカル プロパティが優先される

スーパークラスとサブクラスが同じ名前でプロパティを定義する場合、このプロパティを参照するメソッドは、そのメソッドを定義しているクラスのプロパティにアクセスします。

たとえば、サブクラスのプロパティの名前がスーパークラスのプライベート プロパティと同じで、スーパークラスのメソッドがプロパティ名を参照する場合、MATLAB® は、スーパークラスで定義されているプロパティにアクセスします。

次のクラス SuperSub を考えます。

classdef Super
   properties (Access = private)
      Prop = 2
   end
   methods
      function p = superMethod(obj)
         p = obj.Prop;
      end
   end
end
classdef Sub < Super
   properties
      Prop = 1
   end
end

Sub クラスのインスタンスを作成し、このインスタンスを使用してスーパークラスのメソッドを呼び出すと、MATLAB はスーパークラスのプライベート プロパティにアクセスします。

subObj = Sub
subObj = 

  Sub with properties:

    Prop: 1
subObj.superMethod
ans =

     2

関連するトピック