有人可以在Dart中用写一些关键字的正式定义吗?
在官方Dart示例中,我发现:
class TaskElement extends LIElement with Polymer, Observable {
但我仍然无法理解它到底在做什么。
答案 0 :(得分:27)
with
关键字表示使用“mixin”。请参阅here。
mixin是指能够将另一个或多个类的功能添加到您自己的类中,而无需继承这些类。现在可以在类上调用这些类的方法,并执行这些类中的代码。 Dart没有多重继承,但使用mixins允许您折叠其他类以实现代码重用,同时避免多重继承会导致的问题。
我注意到你已经回答了一些关于Java的问题 - 用Java术语,你可以把mixin想象成一个接口,它不仅可以指定给定的类将包含给定的方法,还可以提供代码那种方法。
答案 1 :(得分:9)
您可以将mixin视为Java中的Interface和Swift中的协议。这里是简单的示例。
mixin Human {
String name;
int age;
void about();
}
class Doctor with Human {
String specialization;
Doctor(String doctorName, int doctorAge, String specialization) {
name = doctorName;
age = doctorAge;
this.specialization = specialization;
}
void about() {
print('$name is $age years old. He is $specialization specialist.');
}
}
void main() {
Doctor doctor = Doctor("Harish Chandra", 54, 'child');
print(doctor.name);
print(doctor.age);
doctor.about();
}
希望对理解有所帮助。