• 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);
    
    
    }
  • 相关阅读:
    快速排序法
    ios随机数
    ios简单更改系统TabBar的高度
    ios电话拨打进行监听电话状态
    iosUISegmentedControl的基本设置
    ios使用xcode进行Archive打包上传出现的常见错误
    ios实现文字的自适应
    ios 给view添加一个渐变的背景色
    iOSNSDate的相关操作
    ios导航栏又按钮添加图片后使其保持原色
  • 原文地址:https://www.cnblogs.com/loaderman/p/11026875.html
Copyright © 2020-2023  润新知