美文网首页
Dart中的新特性(Mixins)

Dart中的新特性(Mixins)

作者: SunShower | 来源:发表于2020-05-11 11:06 被阅读0次

    什么是Mixins?Mixins的中文意思是混入,即在一个类中混入其他类。首先我们需要知道,Mixins不是接口,也不是继承,它是Dart中的一个新特性,主要实现了类似于多继承的功能。

    class A{
      
    }
    class B{
      
    }
    
    class C with A,B{
    
    }
    

    在使用的过程中,我们需要注意:
    作为Mixins的类,只能继承自object类,不能继承自其他类,如下:

    class Person{
      
    }
    class A extends Person{
    
    }
    class B{
    
    }
    
    class C with A,B{
          //此时将会报错:由于A继承自Person,不能混入
    }
    

    同时作为Mixins的类,不能带有构造函数,否则也不能混入。
    当我们在混入的两个类中,如果这两个类中出现类同名方法,此时,后者将覆盖前者的方法:

    class A{
      run(){
        print("A is running");
      }
    }
    class B{
      run(){
        print("B is running");
      }
    }
    class C with A,B{
    
    }
    main(){
      var c =new C();
      c.run();
    }
    
    运行结果

    所以在混入多个类时,需要确定是否存在同名方法,以及根据情况,选择混入的顺序。(该情况,在同时有继承和混入的情况下也存在,后者将会覆盖前者的同名方法。)
    最后,我们需要知道, Mixins的类系是其超类的子类型,即:

    class A{
      
    }
    class B{
      
    }
    
    class C with A,B{
    
    }
    main(){
      print(c is A);
      print(c is B);
      print(c is C);
    }
    
    运行结果

    相关文章

      网友评论

          本文标题:Dart中的新特性(Mixins)

          本文链接:https://www.haomeiwen.com/subject/rzwynhtx.html