Contenido principal

Atributos de propiedad

Finalidad de los atributos de propiedad

Puede especificar atributos en la definición de clase para personalizar el comportamiento de las propiedades con fines concretos. Controle características como el acceso, almacenamiento de datos y visibilidad de las propiedades configurando atributos. Las subclases no heredan atributos de miembros de superclases.

Especificar atributos de propiedad

Asigne atributos de propiedad en la misma línea que la palabra clave properties.

properties (Attribute1 = value1, Attribute2 = value2,...)
   ...
end

Por ejemplo, defina una propiedad Data con acceso private.

properties (Access = private)
   Data
end

Puede utilizar una sintaxis más simple para atributos cuyos valores sean true. El propio nombre del atributo implica un valor true y añadir el operador NOT (~) al nombre implica false. Por ejemplo, este bloque define propiedades abstractas.

properties (Abstract)
   ...
end

Tabla de atributos de propiedad

Todas las propiedades admiten los atributos incluidos en esta tabla. Los valores de los atributos se aplican a todas las propiedades definidas dentro del bloque de código properties...end que especifica los valores no predeterminados. Los atributos que no especifica de manera explícita toman valores predeterminados.

Atributos de propiedad

Atributo

Valores

Información adicional

AbortSet

  • true: MATLAB® no establece el valor de la propiedad ni llama a un método establecido si el valor nuevo es el mismo que el valor actual.

  • false (predeterminado): MATLAB establece el valor de la propiedad independientemente del valor actual.

Solo para clases de identificadores. Establecer AbortSet en true también evita que se desencadene la propiedad PreSet y los eventos de PostSet.

Para obtener más información, consulte Assignment When Property Value Is Unchanged.

Abstract

  • true: la propiedad no tiene implementación, pero una subclase concreta debe anular esta propiedad sin que Abstract esté establecido en true.

  • false (predeterminado): la propiedad es concreta y no necesita que se anule en una subclase.

Las propiedades abstractas no pueden definir métodos de acceso set o get. Consulte Property Get and Set Methods.

Las propiedades abstractas no pueden definir valores iniciales.

Una clase sellada no puede definir miembros abstractos.

Access

  • public (predeterminado): la propiedad es accesible desde cualquier código.

  • protected: la propiedad es accesible desde la clase definida o sus subclases.

  • private: a la propiedad solo pueden acceder miembros de la clase definida.

  • Lista de clases que tienen acceso get y set a esta propiedad. Especifique clases como un objeto matlab.metadata.Class único o un arreglo de celdas de objetos matlab.metadata.Class. Para obtener más información, consulte Listas de acceso a propiedades.

Utilice Access para establecer el mismo valor para SetAccess y GetAccess.

Especificar Access como un arreglo de celdas vacío, {}, es lo mismo que el acceso private.

Para obtener más información, consulte Class Members Access.

Constant

  • true: la propiedad tiene el mismo valor en todos los casos de la clase.

  • false (predeterminado): el valor de la propiedad puede variar entre casos.

Las subclases heredan propiedades constantes, pero no pueden cambiarlas.

Las propiedades constantes tampoco pueden definirse como dependientes.

El valor de SetAccess se ignora en las propiedades constantes.

Para obtener más información, consulte Define Class Properties with Constant Values.

Dependent

  • true: el valor de la propiedad no se almacena en el objeto. El valor se calcula cuando se accede a la propiedad.

  • false (predeterminado): el valor de la propiedad se almacena en el objeto.

Puede definir métodos set para propiedades dependientes, pero el método set en realidad no puede establecer el valor de la propiedad. Puede ejecutar otras acciones, como establecer el valor de otra propiedad. Para ver un ejemplo, consulte When to Use Set Methods with Dependent Properties.

Los valores que devuelven los métodos get de las propiedades dependientes no se tienen en cuenta al probar la igualdad de objetos con isequal.

GetAccess

  • public (predeterminado): la propiedad se puede leer desde cualquier código.

  • protected: la propiedad se puede leer desde la clase definida o sus subclases.

  • private: solo los miembros de la clase definida pueden leer la propiedad.

  • Lista de clases que pueden leer esta propiedad. Especifique clases como un objeto matlab.metadata.Class único o un arreglo de celdas de objetos matlab.metadata.Class. Para obtener más información, consulte Listas de acceso a propiedades.

Especificar GetAccess como un arreglo de celdas vacío, {}, es lo mismo que el acceso private.

En la ventana de comandos, MATLAB no muestra los nombres ni los valores de las propiedades con GetAccess protected o private.

Todas las subclases deben especificar los mismos valores que las superclases para los atributos SetAccess y GetAccess de la propiedad.

Para obtener más información, consulte Class Members Access.

GetObservable

  • true: puede crear elementos de escucha para propiedades de clases de identificadores. Los elementos de escucha se llaman siempre que se consulten los valores de las propiedades.

  • false (predeterminado): los elementos de escucha no tienen acceso a esta propiedad.

Para obtener más información, consulte Property-Set and Query Events.

Hidden

  • true: la propiedad no es visible en listas de propiedades ni en resultados de llamadas a las funciones get, set o properties.

  • false (predeterminado): la propiedad es visible.

En la ventana de comandos, MATLAB no muestra los nombres ni los valores de las propiedades cuyo atributo Hidden sea true. No obstante, las propiedades hidden son visibles en la app Class Diagram Viewer.

NonCopyable

  • true: el valor de la propiedad no se copia cuando se copia el objeto que lo define.

  • false (predeterminado): el valor de la propiedad se copia cuando se copia el objeto.

Puede establecer NonCopyable en true solo en clases de identificadores.

Para obtener más información, consulte Exclude Properties from Copy.

PartialMatchPriority

Entero positivo: define la prioridad relativa de las coincidencias de nombres de propiedades parciales que se utilizan en los métodos get y set. El valor predeterminado es 1.

Utilícelo únicamente con subclases de matlab.mixin.SetGet.

Para obtener más información, consulte Set Priority for Matching Partial Property Names.

SetAccess

  • public (predeterminado): la propiedad se puede establecer desde cualquier código.

  • protected: la propiedad se puede establecer desde la clase definida o sus subclases.

  • private: solo los miembros de la clase definida pueden establecer la propiedad.

  • immutable: solo el constructor puede establecer la propiedad.

  • Lista de clases que tienen acceso set a esta propiedad. Especifique clases como un objeto matlab.metadata.Class único o un arreglo de celdas de objetos matlab.metadata.Class. Para obtener más información, consulte Listas de acceso a propiedades.

Todas las subclases deben especificar los mismos valores que las superclases para los atributos SetAccess y GetAccess de la propiedad.

Para obtener más información, consulte Class Members Access, Properties Containing Objects y Mutable and Immutable Properties.

SetObservable

  • true: puede crear elementos de escucha para propiedades de clases de identificadores. Los elementos de escucha se llaman siempre que se establezcan los valores de las propiedades.

  • false (predeterminado): los elementos de escucha no tienen acceso a esta propiedad.

Para obtener más información, consulte Property-Set and Query Events.

Transient

  • true: el valor de la propiedad no se guarda cuando el objeto se guarda en un archivo o se envía desde MATLAB a otro programa, como la aplicación del motor de MATLAB.

  • false (predeterminado): el valor de la propiedad se guarda cuando se guarda el objeto.

Para obtener más información, consulte Default Save and Load Process for Objects.

WeakHandle (desde R2024b)

  • true: la propiedad almacena una referencia débil a un objeto de identificador. Las referencias débiles de un objeto no evitan que se elimine dicho objeto.

  • false (predeterminado): la propiedad almacena un objeto de clase de valor o una referencia fuerte a un objeto de identificador.

Las propiedades definidas como WeakHandle solo pueden tomar arreglos de objetos de identificador como valores.

Todas las propiedades definidas con el atributo WeakHandle deben utilizar validación de clases. Los valores predeterminados están admitidos, pero deben estar vacíos o ser un arreglo de identificadores no válidos.

WeakHandle no se puede utilizar para propiedades que contienen clases que hereden de matlab.indexing.RedefinesParen o que personalicen la indexación anulando subsref o subsasgn.

Consulte Weak Reference Handles para ver más ejemplos y obtener más información.

Atributos de marco

Las clases que utilizan determinadas clases básicas de marco tienen atributos específicos del marco. Consulte la documentación de la clase básica concreta que está utilizando para obtener información sobre estos atributos.

Listas de acceso a propiedades

Puede utilizar listas de instancias de matlab.metadata.Class para los atributos Access, GetAccess y SetAccess. Por ejemplo, esta clase declara listas de acceso para las propiedades Prop1 y Prop2.

classdef PropertyAccess
   properties (GetAccess = {?ClassA, ?ClassB})
      Prop1
   end
   properties (Access = ?ClassC)
      Prop2
   end
end

Para Prop1:

  • Las clases ClassA y ClassB tienen acceso get a Prop1.

  • Todas las subclases de ClassA y ClassB tienen acceso get a Prop1.

  • Las listas de acceso no son heredadas, por lo que las subclases de PropertyAccess no tienen acceso get a Prop1 a menos que definan de manera explícita ese acceso.

Para Prop2:

  • ClassC tiene acceso get y set a Prop2.

  • Todas las subclases de ClassC tienen acceso get y set a Prop2.

  • Las listas de acceso no son heredadas, por lo que las subclases de PropertyAccess no tienen acceso a Prop2 a menos que definan de manera explícita ese acceso.

Consulte también

Temas