Main Content

継承プロパティの変更

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

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

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

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

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

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

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

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

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

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

classdefSuperproperties(Access = private) Prop = 2endmethodsfunctionp = superMethod(obj) p = obj.Prop;endendend
classdefSub < SuperpropertiesProp = 1endend

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

subObj = Sub
subObj = Sub with properties: Prop: 1
subObj.superMethod
ans = 2

関連するトピック