我已经浏览了语言文档,似乎Google Dart不支持混入(接口中没有方法体,没有多重继承,也没有类似Ruby的模块)。 我是正确的吗?还是Dart有其他实现混入功能的方式?
很高兴地告诉大家,现在的答案是肯定的!
Mixin实际上就是一个子类和父类之间的差异。然后您可以将该差异“混合”到另一个类中。
例如,考虑这个抽象类:
abstract class Persistence {
void save(String filename) {
print('saving the object as ${toJson()}');
}
void load(String filename) {
print('loading from $filename');
}
Object toJson();
}
abstract class Warrior extends Object with Persistence {
fight(Warrior other) {
// ...
}
}
class Ninja extends Warrior {
Map toJson() {
return {'throwing_stars': true};
}
}
class Zombie extends Warrior {
Map toJson() {
return {'eats_brains': true};
}
}
混合定义的限制包括:
一些额外的阅读材料: