Main Content

对子类对象调用超类方法

超类与子类的关系

子类可以覆盖超类方法,从而支持由子类定义更大程度的特化。由于有子类对象本身是超类对象这种关系,在执行自定义子类代码之前调用方法的超类版本通常很有用。

如何调用超类方法

如果子类方法与超类方法同名,则子类方法可以调用超类方法。在子类中,用 @ 符号引用方法名称和超类名。

以下是调用由 MySuperClass 定义的 superMethod 的语法:

superMethod@MySuperClass(obj,superMethodArguments)

例如,子类可以调用超类 disp 方法来实现对象的超类部分的显示。然后,子类添加代码来显示对象的子类部分:

classdef MySub < MySuperClass 
   methods
      function disp(obj)
         disp@MySuperClass(obj)
            ...
      end 
   end 
end 

如何调用超类构造函数

如果您创建子类对象,MATLAB® 会调用超类构造函数来初始化子类对象的超类部分。默认情况下,MATLAB 不带参量调用超类构造函数。如果希望用特定参量调用超类构造函数,请从子类构造函数显式调用超类构造函数。在对该对象进行任何其他引用之前,必须先调用超类构造函数。

调用超类构造函数的语法使用 @ 符号:

obj = obj@MySuperClass(SuperClassArguments)

在此类中,MySub 对象由 MySuperClass 构造函数初始化。超类构造函数使用指定的参量构造对象的 MySuperClass 部分。

classdef MySub < MySuperClass
   methods
      function obj = MySub(arg1,arg2,...)
         obj = obj@MySuperClass(SuperClassArguments);
            ...
      end 
   end 
end 

有关详细信息,请参阅子类构造函数

相关主题