Dart中一个类实现多个接口
示例讲解
abstract class A {
pritA();
}
abstract class B {
pritB();
}
class C implements A, B {//实现多个接口的话,就要实现所有接口中的方法以及属性
@override
pritA() {
print("pritA");
}
@override
pritB() {}
}
void main(List<String> args) {
C c = new C();
c.pritA();
}
Dart中的Mixins
mixins的中文意思是混入,就是在类中混入其他功能
在Dart中可以使用mixins实现类似多继承的功能
因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:
1、作为mixins的类只能继承自Object,不能继承其他类
2、作为mixins的类不能有构造函数
3、一个类可以mixins多个mixins类
4、mixins绝不是继承,也不是接口,而是一种全新的特性
class A {
void printA(){
print("A");
}
}
class B {
void printB(){
print("B");
}
}
class C with A,B {//相当于继承A和B类 方法和属性都可以访问到
}
void main(List<String> args) {
var c = new C();
c.printA();
c.printB();
}
示例2
class Person {
String? name;
num? age;
Person(this.name, this.age);
printInfo() {
print("${this.name}---${this.age}");
}
void run(){
print("Person run");
}
}
class A {
void printA() {
print("A");
}
void run(){
print("A run");
}
}
class B {
void printB() {
print("B");
}
void run(){
print("B run");
}
}
class C extends Person with A, B {
C(super.name, super.age);
}
void main(List<String> args) {
var c = new C("张三", 34);
c.printA();
c.printB();
c.printInfo();
c.run();//根据with的顺序来,最后的替换之前的方法
}
Dart中mixins的类型 就是其超类的子类型
class A {
void printA(){
print("A");
}
}
class B {
void printB(){
print("B");
}
}
class C with A, B {
}
void main(List<String> args) {
C c = new C();
print(c is A);
print(c is B);
print(c is C);//都是true
}
记录Dart学习,谢谢