Dart中的抽象类,多态和接口
(1) Dart中抽象类:Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。
1、抽象类通过abstract 关键字来定义
2、Dart中的抽象方法不能用abstract声明,Dart中没有方法体的方法我们称为抽象方法。
3、如果子类继承抽象类必须得实现里面的抽象方法
4、如果把抽象类当做接口实现的话必须得实现抽象类里面定义的所有属性和方法。
5、抽象类不能被实例化,只有继承它的子类可以
extends抽象类和implements的区别:
1、如果要复用抽象类里面的方法,并且要用抽象方法约束自类的话我们就用extends维承抽象类
2、如果只是把抽象类当做标准的话我们就用implements实现抽象类
(2) 接口:接口就是一个约定,一个约束。dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现。同样使用implements关键字进行实现。但是dart的接口有点奇怪,如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍。而因为抽象类可以定义抽象方法,普通类不可以,所以一般如果要实现像Java接口那样的方式,一般会使用抽象类。
建议使用抽象类定义接口。
save表示储存数据,delete表示删除数据。
(接口的规范写法)
uri是数据库的连接地址
接口定义的属性和方法必须按照接口的规范来写
包括传入传入值的数量和传入参数的类型也得按规范来写,而且必须实现接口里面提供的所有方法
软件里的快速方法:点击快速修复再点击create这三个方法
@override属于元数据,是复写父类的一种方法
Dart中的Mixins
mixins的中文意思是混入就是在类中混入其他功能。
在Dart中可以使用mixins实现类似多继承的功能
因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:
1、作为mixins的类只能继承自Object,不能继承其他类
2、作为mixins的类不能有构造函数
3、一个类可以mixins多个mixins类
4、mixins不是继承,也不是接口,而是一种全新的特性
类在dart中没法实现多继承
5、mixins的类型就是其超类的子类型。
6、在继承的过程中如果继承的两个类中都有同样的方法,那么会继承后边的一个(后边的把前面的给替换掉了)(这个顺序是看with后面的顺序,这个顺序才代表继承的顺序)
泛型,泛型方法,泛型类,泛型接口
1.泛型:泛型就是解决类,接口,方法的复用性,以及对不特定类型的支持(类型校验)
一般用T表示泛型,要求在调用方法的时候指定类型,同时要求传入的value也是泛型
(可以传入任意类型的泛型的定义方法)
(定义指定类型的泛型)
2.泛型类:
指定类型之后就只能传入特定类型的数据了。如果不指定类型可以传入任何类型的数据
3.泛型接口
实现数据缓存的功能:有文件缓存,内存缓存。文件缓存和内容缓存按照接口约束实现
- 定义一个泛型接口,约束实现它的子类必须有getByKey(key)和setByKey(key/value)
- 要求setByKey的时候的value的类型和实例化子类的时候指定的类型一致
- 文件缓存:FlieCache.内存缓存: MemoryCache.
Dart中的库 自定义库 系统库 第三方库
库:库是把公共的功能单独抽离成一个文件,这个文件称为库,在用到的地方直接引入这个库,就可以使用这个库里面定义的一些功能。
在Dart中,库在使用时通过import关键字引入
1ibrary指令可以创建一个库,每个Dart文件都是一个库,即使没有使用library指令来指定
Dart中的库主要有三种:
1、我们自定义的库(直接引入自己目录里面的库)
import "1ib/xxx.dart':
2、系统内置库(如果我们要请求服务器中的api接口的话,要使用到系统内置的库io ,写法:import “dart:io”)(如果要使用min和max这样的方法时要使用math,写法:import“dart:math”)
import 'dart;math';import 'dart;io";
import 'dart:convert;
3、Pub包管理系统中的库(第三方库需要通过package:来引入,引入之后可以直接按文档来,不用记代码)
https://pub.dev/packages
https://pub.flutter-io.cn/packages
https://pub.dartlang.org/flutter/
在自己想项目根目录新建pubspec.yam1文件,内容如下:
Name:***
Description:A new flutter module project
Dependencies:
http:
Date-format:
2、pubspec.yan1文件 配置名称 、描述、依赖等信息
3、然后运行 pub get 获取包下载到本地
4、项目中引入库import‘ package:http/http.dart’as http;看文档使用