• Dart语言学习(十三) Dart Mixins 实现多继承


    Mixins

    Mixins(混入功能)相当于多继承,也就是说可以继承多个类,使用with关键字来实现Mixins的功能。

    那么多个类中有相同的方法时候,会被覆盖吗?覆盖的先后是什么?

    class A{
      void a(){
        print("A.a()...");
      }
    }
    
    class B{
    
      void a(){
        print("B.a()...");
      }
    
      void b(){
        print("B.b()...");
      }
    }

    现在新建一个类D,使得D继承A和B

    // 类D 继承A和B 
    class D  extends A with B{
    
    }

    执行:

    void main() {
      var d = new D();
      d.a();
    }

    输出:

    B.a()...

    如果我们改变A 和B 顺序,如下

    // 类D 继承A和B,B在前A在后
    class D  extends B with A{
    
    }

    再次执行

    void main() {
      var d = new D();
      d.a();
    }

    输出:

    A.a()...

    说明了:后面的类中的方法将前面的类中相同的方法覆盖

    我们再验证三个类的情况:

    新建类 C

    class C{
    
      void a(){
        print("C.a()...");
      }
    
      void b(){
        print("C.b()...");
      }
    
      void c(){
        print("C.c()...");
      }
    }

    修改类D 

    // 类D 继承A、B、C,A,C在前 ,B在最后
    class D  extends A with C,B{
    
    }

    再次执行

    void main() {
      var d = new D();
      d.a();
    }

    输出:

    B.a()...

    再次说明:后面的类中的方法将前面的类中相同的方法覆盖。

    综上,Dart中使用Mixins,可以达到多继承的效果,后面的类中的方法将前面的类中相同的方法覆盖

    Dart学习系列文章:https://www.cnblogs.com/jukaiit/category/1636484.html

  • 相关阅读:
    jstat使用
    oracle 定期copy 大表统计信息(分区表)
    PL/SQL注册码
    Linux系统--命令行安装weblogic10.3.6
    oracle 11.2.0.4 dbca创建数据库时 报错ORA-12532
    自动重建索引脚本
    oracle 添加登陆数据库触发器--记录IP 地址
    oracle 触发器
    oracle 定位SQL
    查询rman 备份信息集
  • 原文地址:https://www.cnblogs.com/jukaiit/p/12260252.html
Copyright © 2020-2023  润新知