Contenido principal

classdef

Palabras clave de definición de clases

Sintaxis

classdef (Attributes) ClassName < SuperclassNames
    properties (Attributes) ... end
    methods (Attributes) ... end
    events (Attributes) ... end
    enumeration ... end
end

Descripción

classdef ... end encierra una definición de clase. La primera línea del bloque classdef tiene esta sintaxis:

classdef (Attribute1 = value1, Attribute2 = value2,...) ClassName < 
SuperclassName1 & SuperclassName2 & ...

  • (Attribute1 = value1, Attribute2 = value2,...): atributos de clase opcionales, especificados como lista separada por comas de nombres de atributo y sus valores asociados. Por ejemplo, esta sintaxis define una clase abstracta con una lista restringida de subclases permitidas:

    classdef (Abstract = true, AllowedSubclasses = {ClassA, ClassB}) exampleClass

    Los atributos que toman valores lógicos pueden utilizarse sin un valor explícito. En el ejemplo anterior, especificar Abstract sin un valor explícito establece el atributo en true. Para obtener más información, consulte Class Attributes.

  • ClassName: los nombres de clase válidos comienzan con un carácter alfabético y pueden contener letras, números o guiones bajos. Guarde la clase en un archivo con el mismo nombre que la clase con una extensión de archivo de .m.

  • SuperclassName1 & SuperclassName2 & ...: lista de superclases, separada por caracteres &. Para obtener más información sobre derivar clases de otras clases, consulte Definición de subclases.

El bloque classdef puede incluir uno o varios de estos bloques de miembros de clases:

  • Propiedades: properties (Attributes) ... end define un bloque de propiedades. Las definiciones de clase pueden contener varios bloques de propiedades y cada uno especifica diferentes configuraciones de atributos que se aplican a las propiedades de ese bloque concreto. Para obtener más información sobre la sintaxis de propiedades, consulte Property Syntax.

  • Métodos: methods (Attributes) ... end define un bloque de métodos. Las definiciones de clase pueden contener varios bloques de métodos y cada uno especifica diferentes configuraciones de atributos que se aplican a los métodos de ese bloque concreto. Para obtener más información sobre la sintaxis de métodos, consulte Method Syntax.

  • Eventos: events (Attributes) ... end define un bloque de eventos. Las definiciones de clase pueden contener varios bloques de eventos y cada uno especifica diferentes configuraciones de atributos que se aplican a los eventos de ese bloque concreto. Para obtener más información sobre la sintaxis de eventos, consulte Events and Listeners Syntax.

  • Enumeración: enumeration ... end define un bloque de enumeraciones. Para obtener más información sobre cómo definir las clases de enumeraciones, consulte Definir clases de enumeraciones.

Ejemplos

contraer todo

La clase Motor almacena la velocidad actual de un motor eléctrico y proporciona funcionalidades básicas para arrancar y detener el motor. La clase hereda de la superclase ElectricVehicleComponent e incluye un bloque de propiedades y un bloque de métodos.

classdef Motor < ElectricVehicleComponent
   
    properties
        CurrentSpeed = 0
        SpeedRange = [0, 180]
    end

    methods
        function motor = start(motor,speed)
            arguments
                motor (1,1) Motor
                speed (1,1) {mustBeReal, mustBeNonnegative}
            end
            if motor.CurrentSpeed > 0
                error("Motor:start:MotorAlreadyRunning",...
                    "Cannot start a motor that is already running.")
            end
            motor.CurrentSpeed = speed;   
        end
        
        function motor = stop(motor)
            if motor.CurrentSpeed == 0
                error("Motor:start:MotorNotRunning",...
                    "Cannot stop a motor that is not running.")
            end
            motor.CurrentSpeed = 0;
        end
    end
end

Sugerencias

  • Solo pueden preceder a classdef líneas vacías y comentarios.

  • Los archivos de definición de clases pueden estar en carpetas en la ruta de MATLAB® o en carpetas de clases cuya carpeta principal esté en la ruta de MATLAB. Los nombres de carpetas de clase siempre comienzan por el carácter @ seguido del nombre de la clase (por ejemplo, @MyClass). Para obtener más información sobre las carpetas de clases, consulte Folders Containing Class Definitions.

  • properties, methods, events y enumeration también son los nombres de funciones de MATLAB utilizadas para consultar los correspondientes miembros de clases de un objeto o nombre de clase dado.

  • Los miembros de propiedades, eventos y enumeraciones no pueden tener el mismo nombre que su clase definida.

  • Puede definir métodos en archivos distintos al archivo de clase principal. Para obtener más información, consulte Methods in Separate Files.

Historial de versiones

Introducido en R2008a