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() {}
}