dart之extends,with,implements

2021-02-09  本文已影响0人  只会ctrl_c_v

描述:

特性:这三种关系可以同时存在,但是有前后顺序:
extends > with > implements

准备:DemoA 类 DemoB 类 DemoC 类

class DemoA {
  String aStr;
  DemoA(this.aStr);
  void aMethod() {
    print("打印 DemoA类的字符串: ${this.aStr}");
  }
  otherMehod() {
    print("DemoA类 'otherMehod' 方法打印");
  }
}

class DemoB {
  String bStr = "默认DemoB 字符串b";
  void bMethod() {
    print("打印 DemoB类的字符串: ${this.bStr}");
  }
}

class DemoC {
  String cStr;
  void cMethod() {
    print("打印 DemoC类的字符串: ${this.cStr}");
  }
}

继承(extends):

// 继承(关键字 extends)
class DemoEx extends DemoA {
  DemoEx(String aStr) : super(aStr);
  extendsMethod() {
    print("自己的方法");
  }
}
void main(List<String> args) {
  DemoEx ex = DemoEx("继承A");
  ex.extendsMethod();
  ex.aMethod();
  ex.otherMehod();
}

打印结果:


image.png

混入(with):

注意:

class DemoWh with DemoB, DemoC {
  withMethod() {
    print("自己的方法");
  }
}
void main(List<String> args) {
  DemoWh wh = DemoWh();
  wh.withMethod();
  wh.bMethod();
  wh.cMethod();
}

打印结果:


image.png

实现(implements):

class DemoIm implements DemoC {
  @override
  String cStr = "DemoIm -> cStr";
  @override
  void cMethod() {
    print("DemoIm implements DemoC 和字符串cStr:" + this.cStr);
  }
}
void main(List<String> args) {
  DemoIm im = DemoIm();
  im.cMethod();
}

打印结果:


image.png

混合使用(注意顺序 extends > with > implements )

class DemoAll extends DemoA with DemoB implements DemoC {
  @override
  String cStr = "123";
  DemoAll(String aStr) : super(aStr);
  @override
  void cMethod() {
    print("DemoAll implements DemoC 和字符串cStr:" + this.cStr);
  }
}
void main(List<String> args) {
  DemoAll all = DemoAll("混合所有");
  all.aMethod();
  all.bMethod();
  all.cMethod();
}

打印结果:


image.png
上一篇下一篇

猜你喜欢

热点阅读