主要内容

修改继承的方法

当修改超类方法

类的设计使您能够通过父类子类对象的方法。超类方法正确执行,因为是一个超类对象的子类对象。然而,子类可以实现他们自己的版本的超类方法,MATLAB®通过子类对象时调用。

子类覆盖继承的方法(即实现相同的方法名称)时需要提供专门的子类的行为。这里有一些模式,覆盖超类方法。

  • 扩展超类方法通过调用子类中的方法。子类方法可以执行子类特有的处理除了调用超类方法。

  • 在超类方法中,实现一系列步骤过程使用受保护的方法。然后重新实现这些步骤在一个子类方法通过重新定义受保护的方法,从内部被称为公共超类方法。

  • 定义子类中同名方法,但是使用不同的实现不同子类对象上执行相同的操作。

  • 实现抽象超类方法在子类中。抽象超类可以定义方法没有实现,依赖子类提供实现。有关更多信息,请参见定义一个接口超类

子类覆盖父类方法的方法必须定义相同的值访问属性定义的超类的方法。

扩展父类方法

调用超类中同名方法从一个子类方法允许您扩展父类子类对象的方法在不影响超类的方法。

例如,假设父类和子类定义一个方法调用喷火。子类方法调用超类的方法和执行其他步骤除了调用超类方法。子类方法可以操作专业的部分不属于超类的子类。

例如,这个子类定义了喷火调用超类方法喷火方法

classdef子<超级方法函数foo (obj)%预处理步骤foo@Super (obj);%后处理步骤结束结束结束

重新实现父类子类的过程

一个超类方法可以定义一个流程执行的一系列步骤(通常每一步的使用方法访问属性设置为受保护的的步骤方法)。这种模式(称为模板方法)使子类创建他们自己的版本的保护方法,实现过程中的各个步骤。这个过程是专门用于子类。

实现这个技术如下所示:

classdef超级方法(密封)函数foo (obj) step1 (obj)%叫step1步骤2 (obj)%调用步骤2步骤3 (obj)%调用步骤3结束结束方法(访问=保护)函数step1 (obj)%超类版本结束函数步骤2 (obj)%超类版本结束函数步骤3 (obj)%超类版本结束结束结束

子类不覆盖喷火方法。相反,它只覆盖保护方法执行的一系列步骤(step1 (obj),步骤2 (obj),步骤3 (obj))。这种技术允许子类专业每一步采取行动,但不能控制过程中的步骤的顺序。当你将一个子类对象传递给超类喷火MATLAB调用子类的方法,步骤方法的调度规则。有关调度方法的更多信息,请参阅方法调用

classdef子<超级方法(访问=保护)函数step1 (obj)%子类版本结束函数步骤2 (obj)%子类版本结束函数步骤3 (obj)%子类版本结束结束结束

重新定义父类方法

你可以完全在一个子类重新定义父类的方法。在这种情况下,超类和子类定义一个具有相同名称的方法。然而,实现将不同的方法不会调用超类和子类的方法。创建独立的版本中同名的方法可以是必要的在相同的操作需要不同的实现超类和子类。

classdef超级方法函数foo (obj)%父类的实现结束结束结束
classdef子<超级方法函数foo (obj)%子类实现结束结束结束

在子类中实现抽象方法

抽象方法没有实现。子类继承抽象方法必须提供一个子类特有的实现是一个具体类的子类。有关更多信息,请参见抽象类和类成员

classdef超级方法(抽象)foo (obj)%抽象方法没有实现结束结束
classdef子<超级方法函数foo (obj)%子类实现的具体方法结束结束结束

相关的话题