Llamar a los métodos de superclases en objetos de subclases
Relación de la superclase con la subclase
Las subclases pueden reemplazar métodos de superclases para ser compatibles con la mayor especialización definida por la subclase. A causa de la relación por la que un objeto de subclase es un objeto de superclase, a menudo es útil llamar a la versión de superclase del método antes de ejecutar el código de subclase especializado.
Cómo llamar a los métodos de superclases
Los métodos de subclases pueden llamar a métodos de superclases si ambos métodos tienen el mismo nombre. Desde la subclase, haga referencia al nombre del método y de la superclase con el símbolo @
.
Esta es la sintaxis para llamar a un superMethod
definido por MySuperClass
:
superMethod@MySuperClass(obj,superMethodArguments)
Por ejemplo, una subclase puede llamar a un método de superclase disp
para implementar la visualización de la parte de superclase del objeto. Después, la subclase añade código para mostrar la parte de subclase del objeto:
classdef MySub < MySuperClass methods function disp(obj) disp@MySuperClass(obj) ... end end end
Cómo llamar al constructor de superclases
Si crea un objeto de subclase, MATLAB® llama al constructor de superclases para inicializar la parte de superclase del objeto de subclase. De forma predeterminada, MATLAB llama al constructor de superclases sin argumentos. Si desea llamar al constructor de superclases con argumentos específicos, llame explícitamente al constructor de superclases desde el constructor de subclases. La llamada al constructor de superclases debe realizarse antes de cualquier otra referencia al objeto.
La sintaxis para llamar al constructor de superclases utiliza un símbolo @
:
obj = obj@MySuperClass(SuperClassArguments)
En esta clase, el objeto MySub
es inicializado por el constructor MySuperClass
. El constructor de superclases construye la parte MySuperClass
del objeto con los argumentos especificados.
classdef MySub < MySuperClass methods function obj = MySub(arg1,arg2,...) obj = obj@MySuperClass(SuperClassArguments); ... end end end
Para obtener más información, consulte Subclass Constructors.