Dart 12-Day

Dart中一个类实现多个接口

abstract class A {
  String name;
  printA();
}

abstract class B {
  printB();
}

class C implements A, B {
  @override
  String name;
  @override
  printA() {
    print('printA');
  }

  @override
  printB() {
    return null;
  }
}

void main() {
  C c = new C();
  c.printA();
}

mixins

  • mixins的中文意思是混入,就是在类中混入其他功能。

  • 在Dart中可以使用mixins实现类似多继承的功能

    • 因为mixins使用的条件,随着Dart版本一直在变,
    • 这里讲的是Dart2.x中使用mixins的条件:
      • 作为mixins的类只能继承自Object,不能继承其他类
      • 作为mixins的类不能有构造函数
      • 一个类可以mixins多个mixins类
      • mixins绝不是继承,也不是接口,而是一种全新的特性
  • 使用 with 关键字

class A {
  String info = "this is A";
  void printA() {
    print("A");
  }
}

class B {
  void printB() {
    print("B");
  }
}

class C with A, B {}

void main() {
  var c = new C();
  c.printA();
  c.printB();
  print(c.info);
}
  • 非要使用构造函数,可以通过先继承的在 with 方式来实现
class Person {
  String name;
  num age;
  Person(this.name, this.age);
  printInfo() {
    print('${this.name}----${this.age}');
  }
  void run() {
    print("Person Run");
  }
}

class A {
  String info = "this is 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 B, A {
  C(String name, num age) : super(name, age);
}

void main() {
  var c = new C('张三', 20);
  c.printInfo();
  // c.printB();
  // print(c.info);
  c.run();
}

mixins的实例类型是什么?

  • mixins的类型就是其超类的子类型。
class A {
  String info = "this is A";
  void printA() {
    print("A");
  }
}

class B {
  void printB() {
    print("B");
  }
}

class C with A, B {}

void main() {
  var c = new C();
  print(c is C); //true
  print(c is A); //true
  print(c is B); //true
  var a=new A();
  print(a is Object);
}

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.icon-default.png?t=M0H8https://serious-lose.notion.site/Dart-12-Day-4fe9f3410544478f80edf09a88a67609 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值