Abstract Classes
Abstract Classes
About
- Abstract classes define incomplete blueprints.
- Cannot be instantiated directly.
- Enforce implementation contracts.
- Support partial implementations.
Main Topics
-
Basic Abstract Class
- Definition: Class with
abstract
modifier. - Example:
abstract class Shape { double area(); // Abstract method }
- Definition: Class with
-
Concrete Subclasses
- Definition: Implementing abstract members.
- Example:
class Circle extends Shape { @override double area() => pi * radius * radius; }
-
Partial Implementations
- Definition: Mixing concrete and abstract.
- Example:
abstract class Animal { void eat(); // Abstract void sleep() => print('Sleeping'); // Concrete }
-
Interface Enforcement
- Definition: Required method signatures.
- Example:
abstract class Repository { Future<Data> fetch(); }
How to Use
- Declare: Use
abstract
modifier - Implement: Subclasses must override abstracts
- Extend: Can include concrete methods
- Combine: With interfaces and mixins
How It Works
- Instantiation: Only through subclasses
- Type System: Abstract types as references
- Contracts: Compile-time enforcement
Example Session:
void main() {
Shape circle = Circle(radius: 5); // Abstract type reference
print(circle.area());
}
Conclusion
Abstract classes strike a balance between interfaces and full implementations, serving as powerful tools for defining shared contracts while allowing flexible concrete implementations in Dart applications.