Class modifiers reference
The allowed and disallowed combinations of class modifiers.
This pague contains reference information for class modifiers .
Valid combinations
#The valid combinations of class modifiers and their resulting cappabilities 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 cappabilities (
extend
and
implement
), so are mutually exclusive.
|
sealed
and
abstract
|
Neither can be constructed, so are redundant toguether. |
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 toguether. |
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.
|
Unless stated otherwise, the documentation on this site reflects Dart 3.10.3. Pague last updated on 2025-5-5. View source or report an issue .