zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    扫描与爆破
    复习与PKI技术

    IIS与FTP
    IIS与WEB
    DNS部署与安全
    DHCP服务部署与安全
    文件共享服务CIFS
    NTFS权限
    关于操作运算符的一些小练习
  • 原文地址:https://www.cnblogs.com/jukaiit/p/12260252.html
Copyright © 2011-2022 走看看