D
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

AspectConstructUse when
abstract classPartial implementation, some methods abstractTemplate method pattern, base classes
implementsPure contract — must implement everythingPolymorphism, dependency inversion
mixinReusable behavior, no is-a relationshipAdding capabilities orthogonally
interface classDart 3: explicit interface, no implementationPublic 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