Saltar al contenido principal

Referencia de modificadores de clase

Las combinaciones permitidas y no permitidas de modificadores de clase.

Esta página contiene información de referencia para los modificadores de clase (class modifiers).

Combinaciones válidas

#

Las combinaciones válidas de modificadores de clase y las capacidades resultantes son:

Declaración Construir? Extender? Implementar? Mezclar (mix in)? Exhaustivo?
class Yes Yes Yes No No
base class Yes Yes No No No
interface class Yes No Yes No No
final class Yes No No No No
sealed class No No No No Yes
abstract class No Yes Yes No No
abstract base class No Yes No No No
abstract interface class No No Yes No No
abstract final classNoNoNoNoNo
mixin class Yes Yes Yes Yes No
base mixin class Yes Yes No Yes No
abstract mixin class No Yes Yes Yes No
abstract base mixin class No Yes No Yes No
mixin No No Yes Yes No
base mixin No No No Yes No

Combinaciones inválidas

#

Ciertas combinaciones de modificadores no están permitidas:

CombinaciónRazonamiento
base, interface y final Todos controlan las mismas dos capacidades ( extender (extend) e implementar (implement) ), por lo que son mutuamente excluyentes.
sealed y abstract Ninguna se puede construir, por lo que son redundantes juntas.
sealed con base, interface o final Los tipos sealed ya no se pueden mezclar (mixed in), extender o implementar desde otra biblioteca, por lo que es redundante combinarlos con los modificadores enumerados.
mixin y abstract Ninguna se puede construir, por lo que son redundantes juntas.
mixin con interface, final o sealed Una declaración de mixin o mixin class está destinada a mezclarse (mixed in), lo cual impiden los modificadores enumerados.
enum y cualquier modificador Las declaraciones enum no se pueden extender, implementar ni mezclar (mixed in), y siempre se pueden instanciar, por lo que no se aplica ningún modificador a las declaraciones enum.
extension type y cualquier modificador Las declaraciones extension type no se pueden extender ni mezclar (mixed in), y solo pueden ser implementadas por otras declaraciones extension type.