目录

Class modifiers reference

This page contains reference information for class modifiers.

Valid combinations

#

The valid combinations of class modifiers and their resulting capabilities are:

Declaration Construct? Extend? Implement? Mix in? Exhaustive?
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 class No No No No No
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

Invalid combinations

#

Certain combinations of modifiers are not allowed:

Combination Reasoning
base, interface, and final All control the same two capabilities (extend and implement), so are mutually exclusive.
sealed and abstract Neither can be constructed, so are redundant together.
sealed with base, interface, or final sealed types already cannot be mixed in, extended or implemented from another library, so are redundant to combine with the listed modifiers.
mixin and abstract Neither can be constructed, so are redundant together.
mixin and interface, final, or sealed A mixin or mixin class declaration is intended to be mixed in, which the listed modifiers prevent.
enum and any modifiers enum declarations can't be extended, implemented, mixed in, and can always be instantiated, so no modifiers apply to enum declarations.
extension type and any modifiers extension type declarations can't be extended or mixed in, and can only be implemented by other extension type declarations.