継承プロパティの変更
スーパークラス プロパティの変更
次のいずれかの条件が成立する場合に、スーパークラスのプロパティを再定義できます。
スーパークラスのプロパティの
Abstract属性がtrueの場合スーパークラスのプロパティの
SetAccess属性とGetAccess属性がprivateの場合
スーパークラスがプロパティを抽象として定義する場合、サブクラスはこのプロパティの具象バージョンを実装するか、またはサブクラスも抽象でなければなりません。スーパークラスは、サブクラス間で一貫したインターフェイスを作成するための抽象プロパティを定義します。
スーパークラスがプライベート アクセスをもつプロパティを定義する場合は、そのスーパークラスだけがこのプロパティにアクセスできます。サブクラスは同じ名前の別のプロパティを実装できます。
メソッドではプライベートのローカル プロパティが優先される
スーパークラスとサブクラスが同じ名前でプロパティを定義する場合、このプロパティを参照するメソッドは、そのメソッドを定義しているクラスのプロパティにアクセスします。
たとえば、サブクラスのプロパティの名前がスーパークラスのプライベート プロパティと同じで、スーパークラスのメソッドがプロパティ名を参照する場合、MATLAB® は、スーパークラスで定義されているプロパティにアクセスします。
次のクラス Super と Sub を考えます。
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