1.首先从flutter的三种类型定义讲起:class(类)、abstract class(抽象类)、 Mixin(混入)
dart里面没有接口的类型,同时也是单继承语言。class和abstract class与java中的差不多,这里不多说,重点讲一下Mixin。编写成mixin的类,能很好的对代码进行复用,也能让dart实现“伪多重继承”,同时又不会造成多重继承导致的菱形问题
2.dart的with、implements、extends
extends:能重写父类属性或者方法,同时能通过super引用父类field
implements:必须重写所有属性和方法,且无法调用父类field
with:无需super关键字能直接调用父类方法或者属性
3.例子对比
void main() {
Vector vector = Vector();
Vector2 vector2 = Vector2();
Vector3 vector3 = Vector3();
vector.paint();
vector2.paint();
vector3.paint();
}
class Painter {
int line = 0;
paint() {
print('$line');
}
}
class Vector extends Painter {
@override
int get line => super.line + 1;
@override
paint() {
print("$line");
}
}
class Vector2 implements Painter {
@override
int line;
@override
paint() {
print("$line");
}
}
class Vector3 with Painter {}
3.控制台输出