Dart LanguageIntermediate30 XP4 min read
What is the difference between abstract class, interface, and mixin in Dart?
TL;DR: Every Dart class is implicitly an interface. abstract classes define contracts + optional implementations; mixins share behavior without inheritance; class + implements = pure contract with no shared implementation.
Full Answer
| Aspect | Construct | Use when |
|---|---|---|
| abstract class | Partial implementation, some methods abstract | Template method pattern, base classes |
| implements | Pure contract — must implement everything | Polymorphism, dependency inversion |
| mixin | Reusable behavior, no is-a relationship | Adding capabilities orthogonally |
| interface class | Dart 3: explicit interface, no implementation | Public API contracts |
Code Examples
dartAbstract class vs implements vs mixin
Output
Dog breathes
[Dog] About to bark
Woof!
{type: dog, name: Dog}Interview Tip
💡
Dart 3 introduced 'interface class' keyword to explicitly mark a class as interface-only (no mixin use, no extension). This makes API design clearer.
#abstract-class#interface#mixin#implements#extends