Dart接口

/*
和Java同樣,dart也有接口,可是和Java仍是有區別的。

  首先,dart的接口沒有interface關鍵字定義接口,而是普通類或抽象類均可以做爲接口被實現。

  一樣使用implements關鍵字進行實現。

  可是dart的接口有點奇怪,若是實現的類是普通類,會將普通類和抽象中的屬性的方法所有須要覆寫一遍。
  
  而由於抽象類能夠定義抽象方法,普通類不能夠,因此通常若是要實現像Java接口那樣的方式,通常會使用抽象類。

  建議使用抽象類定義接口。

*/

/*
定義一個DB庫 支持 mysql  mssql  mongodb

mysql  mssql  mongodb三個類裏面都有一樣的方法

*/


abstract class Db{   //當作接口   接口:就是約定 、規範
    String uri;      //數據庫的連接地址
    add(String data);
    save();
    delete();
}

class Mysql implements Db{
  
  @override
  String uri;

  Mysql(this.uri);

  @override
  add(data) {
    // TODO: implement add
    print('這是mysql的add方法'+data);
  }

  @override
  delete() {
    // TODO: implement delete
    return null;
  }

  @override
  save() {
    // TODO: implement save
    return null;
  }

  remove(){
      
  }

  
}

class MsSql implements Db{
  @override
  String uri;
  @override
  add(String data) {
    print('這是mssql的add方法'+data);
  }

  @override
  delete() {
    // TODO: implement delete
    return null;
  }

  @override
  save() {
    // TODO: implement save
    return null;
  }


}

main() {

  Mysql mysql=new Mysql('xxxxxx');

  mysql.add('1243214');

 
}

/*
和Java同樣,dart也有接口,可是和Java仍是有區別的。

  首先,dart的接口沒有interface關鍵字定義接口,而是普通類或抽象類均可以做爲接口被實現。

  一樣使用implements關鍵字進行實現。

  可是dart的接口有點奇怪,若是實現的類是普通類,會將普通類和抽象中的屬性的方法所有須要覆寫一遍。
  
  而由於抽象類能夠定義抽象方法,普通類不能夠,因此通常若是要實現像Java接口那樣的方式,通常會使用抽象類。

  建議使用抽象類定義接口。

*/

/*
定義一個DB庫 支持 mysql  mssql  mongodb

mysql  mssql  mongodb三個類裏面都有一樣的方法

*/

// import 'lib/Mysql.dart';
import 'lib/MsSql.dart';

main() {

  // Mysql mysql=new Mysql('xxxxxx');

  // mysql.add('1243214');

  MsSql mssql=new MsSql();
  mssql.uri='127.0.0.1';

  mssql.add('增長的數據');

  
}
import 'Db.dart';


class MsSql implements Db{
  @override
  String uri;
  @override
  add(String data) {
    print('這是mssql的add方法'+data);
  }

  @override
  delete() {
    // TODO: implement delete
    return null;
  }

  @override
  save() {
    // TODO: implement save
    return null;
  }


}
abstract class Db{   //當作接口   接口:就是約定 、規範
    String uri;      //數據庫的連接地址
    add(String data);
    save();
    delete();
}
/*
Dart中一個類實現多個接口:
*/

abstract class A{
  String name;
  printA();
}

abstract class B{
  printB();
}

class C implements A,B{  
  @override
  String name;  
  @override
  printA() {
    print('printA');
  }
  @override
  printB() {
    // TODO: implement printB
    return null;
  }

  
}


void main(){

  C c=new C();
  c.printA();


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