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 aren't 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. |
Was this page's content helpful?
Thank you for your feedback!
Provide details Thank you for your feedback! Please let us know what we can do to improve.
Provide details Unless stated otherwise, the documentation on this site reflects Dart 3.8.1. Page last updated on 2025-05-05. View source or report an issue.