zoukankan      html  css  js  c++  java
  • 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);
    
    
    }
  • 相关阅读:
    08 突破512字节的限制 下
    瑞芯微/全志CPU型号
    labview介绍
    07 突破512字节的限制 中
    1-20安卓自学
    1-19安卓自学
    1-18安卓自学
    关系抽取---远程监督 ---《DSGAN: Generative Adversarial Training for Distant Supervision Relation Extraction》
    关系抽取--- 远程监督---《Reinforcement Learning for Relation Classification from Noisy Data》
    关系抽取 --- 远程监督 ---《DIAG-NRE: A Neural Pattern Diagnosis Framework for Distantly Supervised Neural Relation Extraction》
  • 原文地址:https://www.cnblogs.com/loaderman/p/11026875.html
Copyright © 2011-2022 走看看