Dart语言零基础学习笔记(十九)

Dart 接口

dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现。使用implements关键字进行实现。

但是dart的接口有点奇怪,如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍。
而因为抽象类可以定义抽象方法,普通类不可以,所以一般如果要实现像Java接口那样的方式,一般会使用抽象类。

使用抽象类定义接口

abstract class Db {
  //抽象类当做接口   接口就是约定  规范
  add();
  save();
  delete();
}

使用implements关键字进行实现

/**定义一个DB库 支持 mysql  mssql  mongodb

mysql  mssql  mongodb三个类里面都有同样的方法 */

abstract class Db {
  //当做接口   接口就是约定  规范
  late String url; //数据库的连接地址
  add(String data);
  save();
  delete();
}

/**使用implements关键字进行实现 */
class Mysql implements Db {
  @override
  late String url;
  Mysql(this.url);

  @override
  add(String data) {
    print("this is Mysql's add()."+data);
  }

  @override
  delete() {}

  @override
  save() {}
}

void main(List<String> args) {
  var mysql = new Mysql("baidu.com");
  mysql.add('10086');
}
// this is Mysql's add().10086

文件分类

定义一个DB库 支持 mysql mssql

dbmain.dart

import 'dbsql/mysql.dart';
import 'dbsql/mssql.dart';

void main(List<String> args) {
  var mysql = new Mysql("baidu.com");
  mysql.add('10086');

  msSql mssql = new msSql("guge.com");
  mssql.add("10010");
}
// baidu.com is Mysql's add().10086
// guge.com is mssql's add().10010

da.dart

abstract class Db {
  //当做接口   接口就是约定  规范
  late String url; //数据库的连接地址
  add(String data);
  save();
  delete();
}

mysql.dart

import 'db.dart';

class Mysql implements Db {
  @override
  late String url;
  Mysql(this.url);

  @override
  add(String data) {
    print("$url is Mysql's add()."+data);
  }

  @override
  delete() {}

  @override
  save() {}
}

mssql.dart

import 'db.dart';

class msSql implements Db {
  @override
  late String url;
  msSql(this.url);

  @override
  add(String data) {
    print("$url is mssql's add()." + data);
  }

  @override
  delete() {}

  @override
  save() {}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值