dart 类 -> 抽象类
-
dart 抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。
-
抽象类通过abstract 关键字来定义。
-
抽象类不可以被实例化,只有继承他的子类可以。
-
子类继承抽象类必须实现里面的抽象方法。
-
抽象类作为接口,必须实现抽象类里面的所有属性和方法。
-
多态就是父类定义一个属性或者方法,父类不去实现,让子类去实现,这就叫多态。
-
举个例子(抽象类/多态)
/** 定义一个Animal 类要求它的子类必须包含eat方法 */
abstract class Animal {
eat(); //抽象方法 子类中必须实现
printInfo(){
print('我是一个抽象类中的普通方法');
}
}
class Dog extends Animal {
@override //覆写抽象父类的方法
eat(){
print('小狗在吃骨头');
}
}
class Cat extends Animal {
@override
eat(){
print('小猫在吃🐟');
}
}
main(){
Dog d = new Dog();
d.eat(); //小狗在吃骨头
d.printInfo(); //我是一个抽象类中的普通方法
Cat c = new Cat();
c.eat(); //小猫在吃🐟
}
dart 类 -> 接口
- 建议使用抽象类定义接口
- 定义一个DB库,支持 mysql mssql mongodb
- 三个类里面有同样的方法
- 举个例子
/** 定义一个DB 接口,支持mysql mssql mongodb */
// 接口: 接口就是约定,规范
abstract class Db {
String url; //数据库的链接地址
add();
// save();
// delete():
}
class Mysql implements Db {
@override
String url;
@override
add() {
print('mysql add');
}
}
class Mssql implements Db {
@override
String url;
@override
add() {
print('mssql add');
}
}
class Mongodb implements Db {
@override
String url;
@override
add() {
print('mongodb add');
}
}
main(){
Mysql mysql = new Mysql();
mysql.add();
}
dart 中的泛型
- 泛型举个例子
/** 只能返回string 类型的数据 */
String getData(String value){
return value;
}
/** 同时返回 string 类型 和 number类型 */
//1. 不指定类型可以解决这个问题
getData(value){
return value;
}
//缺点:放弃了类型检查
//2.使用泛型
//对传入参数和返回参数都做校验
T getData<T>(T value){
return value;
}
//对返回参数不做校验
getData<T>(T value){
return value;
}
main(){
var result = getData<String>('kangjiahao');
print(result); //kangjiahao
}
- 泛型类
/** 泛型类 */
/** 把下面的类换成泛型类,要求list可以增加int类型的数据,也可以增加string类型的数据 */
class PrintClass {
List list01 = new List<int>();
void add(int value){
this.list01.add(value);
}
void printInfo(){
for(var i = 0; i < this.list01.length; i++){
print(this.list01[i]);
}
}
}
//使用泛型
class PrintClass<T> {
List list = new List<T>();
void add(T value) {
this.list.add(value);
}
void printInfo() {
for (var i = 0; i < this.list.length; i++) {
print(this.list[i]);
}
}
}
main() {
PrintClass p = new PrintClass<int>();
p.add(1);
p.add(2);
p.printInfo(); //1 2
}
dart 中的库, 自定义库, 系统库, 第三方库
- 在dart中,库的使用是通过import关键字来引入的。
- library指令可以创建一个库,每个dart 文件都是一个库,即使没有library指令来指定。
- dart中的库主要有三种。
- 1.我们自定义的库 import ‘lib/xxx.dart’
- 2.系统内置库
import ‘dart.math’;
import ‘dart.io’;
import ‘dart:convert’; - 3.Pub 包中管理系统的库
https://pub.dev/packages;