• Dart中的mixins


    /*
    mixins的中文意思是混入,就是在类中混入其他功能。
    
    在Dart中可以使用mixins实现类似多继承的功能,with关键字
    
    
    因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:
    
      1、作为mixins的类只能继承自Object,不能继承其他类
      2、作为mixins的类不能有构造函数
      3、一个类可以mixins多个mixins类
      4、mixins绝不是继承,也不是接口,而是一种全新的特性
    */
    
    class A {
      String info="this is A";
      void printA(){
        print("A");
      }
    }
    
    class B {
      void printB(){
        print("B");
      }
    }
    
    class C with A,B{
      
    }
    
    void main(){
      
      var c=new C();  
      c.printA();
      c.printB();
      print(c.info);
    
    
    }
    /*
    mixins的中文意思是混入,就是在类中混入其他功能。
    
    在Dart中可以使用mixins实现类似多继承的功能
    
    
    因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:
    
      1、作为mixins的类只能继承自Object,不能继承其他类
      2、作为mixins的类不能有构造函数
      3、一个类可以mixins多个mixins类
      4、mixins绝不是继承,也不是接口,而是一种全新的特性
    */
    
    class Person{
      String name;
      num age;
      Person(this.name,this.age);
      printInfo(){
        print('${this.name}----${this.age}');
      }
      void run(){
        print("Person Run");
      }
    }
    
    class A {
      String info="this is A";
      void printA(){
        print("A");
      }
      void run(){
        print("A Run");
      }
    }
    
    class B {  
      void printB(){
        print("B");
      }
      void run(){
        print("B Run");
      }
    }
    
    class C extends Person with B,A{//如果A、B中有同样的方法则谁在后面就执行谁的方法
      C(String name, num age) : super(name, age);
      
    }
    
    void main(){  
      var c=new C('张三',20);  
      c.printInfo();
      // c.printB();
      // print(c.info);
    
       c.run();
    
    
    }
    /*
    mixins的实例类型是什么?
    
    很简单,mixins的类型就是其超类的子类型。
    
    */
    
    
    
    class A {
      String info="this is A";
      void printA(){
        print("A");
      }
    }
    
    class B {
      void printB(){
        print("B");
      }
    }
    
    class C with A,B{
      
    }
    
    void main(){  
       var c=new C();  
       
      print(c is C);    //true
      print(c is A);    //true
      print(c is B);   //true
    
    
      // var a=new A();
    
      // print(a is Object);
    
    
    }
  • 相关阅读:
    Java 开发者不容错过的 12 种高效工具
    10个基于 Ruby on Rails 构建的顶级站点
    当 ITOA 遇上 OneAlert,企业可以至少每年节省 3600 小时!
    年度十佳 DevOps 博客文章(前篇)
    如何使用 Java8 实现观察者模式?(下)
    企业处理事件风暴的 2 种最佳管理方法
    移动开发:初学 iOS-UIViewController 心得
    如何使用 Java8 实现观察者模式?(上)
    世界级的安卓测试开发流!
    PHP全栈学习笔记19
  • 原文地址:https://www.cnblogs.com/loaderman/p/11026875.html
Copyright © 2020-2023  润新知