Sealed Classes
Sealed Classes
About
- Sealed classes define a fixed hierarchy of subtypes.
- Enable exhaustive pattern matching.
- Compile-time safety for state modeling.
- Alternative to traditional inheritance.
Main Topics
-
Basic Sealed Class
- Definition:
sealed
modifier with subtypes. - Example:
sealed class Result {} class Success extends Result {} class Failure extends Result {}
- Definition:
-
Pattern Matching
- Definition: Exhaustive switch expressions.
- Example:
String handleResult(Result r) => switch(r) { Success() => 'Success', Failure() => 'Failure' };
-
State Modeling
- Definition: Representing finite states.
- Example:
sealed class AuthState {} class LoggedIn extends AuthState {} class LoggedOut extends AuthState {}
-
Algebraic Types
- Definition: Product and sum types.
- Example:
sealed class Shape {} class Circle extends Shape {} class Rectangle extends Shape {}
How to Use
- Declare: Use
sealed
modifier - Extend: Define all allowed subtypes
- Match: Use with
switch
expressions - Exhaust: Compiler checks completeness
How It Works
- Hierarchy: Fixed at compile-time
- Patterns: Compiler knows all cases
- Safety: Prevents missing cases
- Performance: Optimized by compiler
Example Session:
void main() {
Result res = Success();
print(handleResult(res)); // Compiler knows all cases
}
Conclusion
Sealed classes provide compiler-verified state modeling through restricted hierarchies, enabling exhaustive pattern matching and robust domain modeling in Dart applications.