class A {
void a() {
print('a');
}
}
class B implements A {
//implements实现方法,不带super
@override
void a() {
print("b implements a");
}
}
class C {
void c() {
print('c');
}
}
class D {
void d() {
print('d');
}
}
//Dart每个类都是接口
//implement实现不带super方法
//dart单继承(extends),但是可以使用with关键字折叠其他类以实现代码重用
class E extends A with C implements D {
@override
void a() {
// TODO: implement a
super.a();
print("e extends a");
}
@override
void c() {
// TODO: implement c
super.c();
print("e with c");
}
@override
void d() {
// TODO: implement d
print("e implements D");
}
}
main() {
var b = B();
b.a();
print("==================");
var e = E();
e.d();
print("------------------");
e.a();
print("------------------");
e.c();
}
//b implements a
//==================
//e implements D
//------------------
//a
//e extends a
//------------------
//c
//e with c
优先级
class First {
void doPrint() {
print('First');
}
}
class Second {
void doPrint() {
print('Second');
}
}
class Father {
void doPrint() {
print('Father');
}
}
class Son1 extends Father with First, Second {}
class Son2 extends Father with First implements Second {}
class Son3 extends Father implements Second {}
class Son4 extends Father with First implements Second {
void doPrint() {
print("Son4");
}
}
//当有同名方法时:
//无论是extends、implements还是mixin(混入,with),优先级最高的是在具体类中的方法。
//其他优先级:with(尾) > with(首) > extends > implements
main() {
Son1 son1 = new Son1();
son1.doPrint();
print("---------------------");
Son2 son2 = new Son2();
son2.doPrint();
print("---------------------");
Son3 son3 = new Son3();
son3.doPrint();
print("---------------------");
Son4 son4 = new Son4();
son4.doPrint();
}
//Second
//---------------------
//First
//---------------------
//Father
//---------------------
//Son4