Dart中的mixins

/*
mixins的中文意思是混入,就是在類中混入其餘功能。

在Dart中能夠使用mixins實現相似多繼承的功能,with關鍵字


由於mixins使用的條件,隨着Dart版本一直在變,這裏講的是Dart2.x中使用mixins的條件:

  一、做爲mixins的類只能繼承自Object,不能繼承其餘類
  二、做爲mixins的類不能有構造函數
  三、一個類能夠mixins多個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();  
  c.printA();
  c.printB();
  print(c.info);


}
/*
mixins的中文意思是混入,就是在類中混入其餘功能。

在Dart中能夠使用mixins實現相似多繼承的功能


由於mixins使用的條件,隨着Dart版本一直在變,這裏講的是Dart2.x中使用mixins的條件:

  一、做爲mixins的類只能繼承自Object,不能繼承其餘類
  二、做爲mixins的類不能有構造函數
  三、一個類能夠mixins多個mixins類
  四、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);


}
相關文章
相關標籤/搜索