1. 写在前面
在上篇文章中介绍了Dart
中的继承
,那么现在就继续来学习 Dart
中的抽象类
和接口
吧。
【Flutter】 Android Studio 安装第三方模拟器—网易MuMu
【Flutter】项目运行报错Failed to find Build Tools revision 29.0.2
【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘
【Flutter】如何新建项目,运行你的第一个 flutter 工程项目
【Flutter】Dart中的var、final 和 const基本使用
【Flutter】Dart的数据类型list&Map(数组和字典)
【Flutter】Dart的方法中的可选参数、方法作为参数传递
【Flutter】Dart的工厂构造方法&单例对象&初始化列表
2. 抽象类
- 抽象类
抽象类,不能被
实例化
,使用abstract
修饰
- 举例说明抽象类
2.1 抽象类定义
//抽象类测试
abstractTest(){
AbatractClass ab = AbatractClass();
}
//抽象类
abstract class AbatractClass{
}
这里定义了一个抽象类
AbatractClass
,实例化的话会报错的,如下:
2.2 抽象方法
- 抽象方法
这里定义了一个方法,没有实现方法,这就是一个抽象方法
abstract class AbatractClass{
//抽象方法
int sum(int a,int b);
}
抽象方法一定是放在抽象类里面,不然的话也是会报错的。
- 抽象类的子类
定义一个抽象类的子类,那么子类就必须实现父类的抽象方法,如下:
void main() {
abstractTest();
}
abstractTest(){
AbstractClass ab = SubClass();
ab.sum(10, 20);
}
class SubClass extends AbstractClass{
@override
int sum(int a, int b) {
print(a + b);
return a + b;
}
}
abstract class AbstractClass{
//抽象方法
int sum(int a,int b);
}
- 代码运行结果
抽象类的好处是什么呢?
如上面例子中,多态
的情况下,可以直接使用父类的对象调用子类的方法,这里就不需要判断是否是SubClass
了,直接就可以调用SubClass
的方法了,这类似于 iOS 中的协议了,在 dart
中是单继承
,这就没有办法继承多个抽象类了。
2.3 接口
但是可以使用implements
来实现,如下:
void main() {
abstractTest();
}
abstractTest(){
SubClass ab = SubClass();
ab.sum(10, 20);
ab.sub(20, 5);
ab.add(20, 20);
}
class SubClass implements AbstractClass,AbstractClass1,AbstractClass2{
@override
int sum(int a, int b) {
print(a + b);
return a + b;
}
@override
String? name;
@override
int add(int a, int b) {
print(a + b);
return a + b;
}
@override
int sub(int a, int b) {
print(a - b);
return a - b;
}
}
abstract class AbstractClass{
String? name;
//抽象方法
int sum(int a,int b);
}
abstract class AbstractClass1{
//抽象方法
int add(int a,int b);
}
abstract class AbstractClass2{
//抽象方法
int sub(int a,int b);
}
- 运行结果
使用implements
就类似于 OC 中的协议,我们这里称为接口
可以实现多继承。对于继承的抽象类的抽象方法方法,都必须实现,包括属性都得重写。
3. 写在后面
关注我,更多内容持续输出
🌹 喜欢就点个赞吧👍🌹
🌹 觉得有收获的,可以来一波 收藏+关注,以免你下次找不到我😁🌹
🌹欢迎大家留言交流,批评指正,
转发
请注明出处,谢谢支持!🌹