在这里看原文。
看这些教程的时候最好是打开dartpad。直接在里面把这些代码输入进去看结果。这是dart官方提供的一个练习dart的地方。边看边练事半功倍。
正文
- 接口(interface)定义了每个实现这个接口的类都需要遵守的“规则”。
- 当一个类实现(implements)一个接口的手,它必须override接口里的每一个方法和实例变量。
- 然而,Dart不支持声明一个接口的语法。这些类声明本身就是接口声明。
- 任何的类都可以当做接口。要实现这个“接口”只要用implements关键字就可以。
- 一旦一个类被用作接口,就必须要override所有的实例方法和实例成员。简单来说就是实现类要重新定义所有的实例方法和实例成员。
声明“接口”的语法
class interface_nasme {
//...
}
class class_name implements interface_name {
//...
}
例如:
class Person {
void walk() {
print("Person can walk");
}
void talk() {
print("Person can talk");
}
}
class Jay implements Person {
@override
void walk() {
print("Jay can walk");
}
@override
void talk() {
print("Jay can talk");
}
}
main() {
Person person = new Person();
Jay jay = new Jay();
person.walk();
person.talk();
jay.walk();
jay.talk();
}
输出:
Person can walk
Person can talk
Jay can walk
Jay can talk
实现多个接口
Dart不支持多继承,但是可以实现多个接口。
class class_name implements intgerface1, interface2 //,...
例如:
class Person {
String name;
void ShowName() {
print("My name is $name");
}
void walk() {
print("Person can walk");
}
void talk() {
print("Person can talk");
}
}
class Viveki {
String profession;
void ShowProfession() {
print("from class Viveki my profession is $profession");
}
}
class Jay implements Person, Viveki {
@override
String profession;
@override
void ShowProfession() {
print("from class Jay my Profession is $profession");
}
@override
String name;
@override
void ShowName() {
print("From class Jay my name is $name");
}
@override
void walk() {
print("Jay can walk");
}
@override
void talk() {
print("Jay can talk");
}
}
main() {
Person person = new Person();
Jay jay = new Jay();
Viveki viveki = new Viveki();
person.walk();
person.talk();
person.name = "Person";
person.ShowName();
print("");
jay.walk();
jay.talk();
jay.name = "JAY";
jay.profession = "Software Development";
jay.ShowProfession();
jay.ShowName();
print("");
viveki.profession = "Chemical Engineer";
viveki.ShowProfession();
}
output:
Output
Person can walk
Person can talk
My name is Person
Jay can walk
Jay can talk
from class Jay my Profession is Software Development
From class Jay my name is JAY
from class Viveki my profession is Chemical Engineer
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。