added resources, coding challenges, and more study guides
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
# Mixins in Dart: A Comprehensive Guide
|
||||
|
||||
Mixins are a way of reusing a class's code in multiple class hierarchies. They allow you to add features to a class without inheritance.
|
||||
|
||||
## 1. Creating a Mixin
|
||||
|
||||
To create a mixin, use the `mixin` keyword followed by the mixin name.
|
||||
|
||||
### Example:
|
||||
|
||||
```dart
|
||||
mixin Logger {
|
||||
void log(String message) {
|
||||
print('Log: $message');
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 2. Using a Mixin
|
||||
|
||||
To use a mixin, use the `with` keyword followed by the mixin name.
|
||||
|
||||
### Example:
|
||||
|
||||
```dart
|
||||
class User with Logger {
|
||||
String name;
|
||||
|
||||
User(this.name);
|
||||
|
||||
void greet() {
|
||||
log('Hello, $name!');
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
var user = User('Alice');
|
||||
user.greet(); // Prints: Log: Hello, Alice!
|
||||
}
|
||||
```
|
||||
|
||||
## 3. Multiple Mixins
|
||||
|
||||
A class can use multiple mixins.
|
||||
|
||||
### Example:
|
||||
|
||||
```dart
|
||||
mixin Swimmer {
|
||||
void swim() => print('Swimming');
|
||||
}
|
||||
|
||||
mixin Flyer {
|
||||
void fly() => print('Flying');
|
||||
}
|
||||
|
||||
class Duck with Swimmer, Flyer {}
|
||||
|
||||
void main() {
|
||||
var duck = Duck();
|
||||
duck.swim(); // Prints: Swimming
|
||||
duck.fly(); // Prints: Flying
|
||||
}
|
||||
```
|
||||
|
||||
## 4. Mixin Inheritance
|
||||
|
||||
Mixins can inherit from other mixins using the `on` keyword.
|
||||
|
||||
### Example:
|
||||
|
||||
```dart
|
||||
mixin MusicalPerformer on Musician {
|
||||
void perform() {
|
||||
playInstrument();
|
||||
sing();
|
||||
}
|
||||
}
|
||||
|
||||
class Musician {
|
||||
void playInstrument() => print('Playing instrument');
|
||||
void sing() => print('Singing');
|
||||
}
|
||||
|
||||
class Singer extends Musician with MusicalPerformer {}
|
||||
|
||||
void main() {
|
||||
var singer = Singer();
|
||||
singer.perform();
|
||||
// Prints:
|
||||
// Playing instrument
|
||||
// Singing
|
||||
}
|
||||
```
|
||||
|
||||
## Conclusion
|
||||
|
||||
Mixins provide a powerful way to reuse code across different class hierarchies. They are particularly useful for adding behavior to classes without the complexity of multiple inheritance.
|
||||
Reference in New Issue
Block a user