class A {
void a() {
print('a');
}
}
class B implements A {
@override
void a() {
print('override a');
}
}
class C {
void c() {
print('c');
}
}
class E {
String e = 'eeee';
}
class D extends A with C, E {
void c() {
print('c is D');
}
void d() {
c();
}
}
一个类自身方法和with的方法同名,会调用自身方法,上面的打印的是c is D
class A {
void c() {
print('a');
}
}
class B implements A {
@override
void c() {
print('override a');
}
}
class C {
void c() {
print('c');
}
}
class E {
String e = 'eeee';
}
class D extends A with C, E {
void c() {
print('c is D');
}
void d() {
c();
}
}
extends父类方法和自身方法同名,还是调用自身方法,所以上面还是打印c is D,也就是说不论是extends还是with,都是优先调用自身的方法
class A {
void c() {
print('a');
}
}
class B implements A {
@override
void c() {
print('override a');
}
}
class C {
void c() {
print('c');
}
}
class E {
String e = 'eeee';
// void c() {
// print('e');
// }
}
class D extends A with C, E {
// void c() {
// print('c is D');
// }
void d() {
c();
}
}
上面的代码会打印c ,也就是说extends是先加载的,会被with里面的同名函数覆盖
class A {
void c() {
print('a');
}
}
class B implements A {
@override
void c() {
print('override a');
}
}
class C {
void c() {
print('c');
}
}
class E {
String e = 'eeee';
void c() {
print('e');
}
}
class D extends A with C, E {
// void c() {
// print('c is D');
// }
void d() {
c();
}
}
如果with多个函数,后面的with会将前面的with覆盖,所以这个会打印e。
此文章部分引用了这个 https://www.jianshu.com/p/3e3cc1a57937