多继承
使用Mixins可以实现多继承。
main() {
A a = new A();
a.printB();
a.printC();
a.printD();
}
class A extends B with C, D {
}
class B {
void printB() {
print("B....");
}
}
class C {
void printC() {
print("C....");
}
}
class D {
void printD() {
print("D....");
}
}
输出:
B....
C....
D....
注意
同名方法的覆盖
继承多个类中存在同名函数时,with后面的类方法会覆盖前面类的方法。
main() {
A a = new A();
a.printB();
}
class A extends B with C, D {
}
class B {
void printB() {
print("B....");
}
}
class C {
void printB() {
print("C....");
}
}
class D {
void printB() {
print("D....");
}
}
输出:
D....
with的类必须继承于Object
class A with B { //报错,The class 'B' can't be used as a mixin because it extends a class other than Object。
}
class B extends C {
void printB() {
print("B....");
}
}
class C {
void printB() {
print("C....");
}
}