美文网首页
dart之extends,with,implements

dart之extends,with,implements

作者: 只会ctrl_c_v | 来源:发表于2021-02-09 11:17 被阅读0次

    描述:

    • 继承(关键字 extends);
    • 混入 mixins (关键字 with);
    • 实现(关键字 implements)

    特性:这三种关系可以同时存在,但是有前后顺序:
    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):

    注意:

    • 作为mixins的类不能有构造函数
    • 一个类可以mixins多个mixins类
    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

    相关文章

      网友评论

          本文标题:dart之extends,with,implements

          本文链接:https://www.haomeiwen.com/subject/otwqxltx.html