Dart中mixins(混入) ,extends ,implement

本文详细解析了Dart语言中的mixins(混入)功能,通过实例演示了如何使用extends、with和implements关键字来实现类的继承与代码重用。同时,深入探讨了在存在同名方法时的方法调用优先级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[Dart] Dart中mixins(混入)功能的简单解释

extends / with / implement

class A {
  void a() {
    print('a');
  }
}

class B implements A {
  //implements实现方法,不带super
  @override
  void a() {
    print("b implements a");
  }
}

class C {
  void c() {
    print('c');
  }
}

class D {
  void d() {
    print('d');
  }
}

//Dart每个类都是接口
//implement实现不带super方法
//dart单继承(extends),但是可以使用with关键字折叠其他类以实现代码重用
class E extends A with C implements D {
  @override
  void a() {
    // TODO: implement a
    super.a();
    print("e extends a");
  }

  @override
  void c() {
    // TODO: implement c
    super.c();
    print("e with c");
  }

  @override
  void d() {
    // TODO: implement d
    print("e implements D");
  }
}

main() {
  var b = B();
  b.a();
  print("==================");
  var e = E();
  e.d();
  print("------------------");
  e.a();
  print("------------------");
  e.c();
}
//b implements a
//==================
//e implements D
//------------------
//a
//e extends a
//------------------
//c
//e with c

优先级

class First {
  void doPrint() {
    print('First');
  }
}

class Second {
  void doPrint() {
    print('Second');
  }
}

class Father {
  void doPrint() {
    print('Father');
  }
}

class Son1 extends Father with First, Second {}

class Son2 extends Father with First implements Second {}

class Son3 extends Father implements Second {}

class Son4 extends Father with First implements Second {
  void doPrint() {
    print("Son4");
  }
}

//当有同名方法时:
//无论是extends、implements还是mixin(混入,with),优先级最高的是在具体类中的方法。
//其他优先级:with(尾) > with(首) > extends > implements
main() {
  Son1 son1 = new Son1();
  son1.doPrint();
  print("---------------------");
  Son2 son2 = new Son2();
  son2.doPrint();
  print("---------------------");
  Son3 son3 = new Son3();
  son3.doPrint();
  print("---------------------");
  Son4 son4 = new Son4();
  son4.doPrint();
}
//Second
//---------------------
//First
//---------------------
//Father
//---------------------
//Son4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值