《越空Dart教程》:第八节 抽象类、多态、接口、和Mixins

《越空Dart教程》:第八节 抽象类、多态、接口、和Mixins

自我介绍

大家好,我是越空,一位货真价实的16岁开发者。由于最近我在学习Dart这门语言,所以我就想总结我所学到的知识,分享给大家,让大家和我一起学习这门语言,争取做到可以让大家真的也学习到东西,并且少走一些弯路,感谢大家的支持。
这是我发表的第一套教程,多多少少会有不足的地方,还请大家多多见谅,有什么问题或者建议,也可以发表评论和私信我,希望可以得到大家的支持,我会再接再厉的!
那么接下来,我们正式开始今天的学习吧!

这是一套系列课程,新来的读者请从第一节开始学习

在上一节我们已经学完了Dart中的类。

本节课我们将学习Dart中的抽象类、多态、接口、和Mixins四部分。

第一部分:抽象类

抽象类的定义

使用abstract关键词来定义抽象类,抽象类可以作为父类被子类继承实现、也可以作为接口来进行使用。抽象类与普通类不同的是,抽象类里可以有抽象方法和普通方法,普通类里只能有普通方法。
例子:定义一个抽象类A
在这里插入图片描述
注意:抽象类不可以和普通类一样被实例化。

抽象类的使用

子类继承抽象类必需实现抽象类中所有的抽象方法。
例子:新建一个普通类B来继承实现抽象类A。在这里插入图片描述
在main函数中实例化使用,在这里插入图片描述

第二部分:多态

多态的定义是: 允许将子类类型的指针赋值给父类类型的指针, 同一个函数调用会有不同的执行效果 。
例如以下这种情况,A1和A2都继承子抽象类A,实现了同样的方法,却是不同的执行效果。在这里插入图片描述
那允许将子类类型的指针赋值给父类类型的指针怎么理解呢,这样理解,
在这里插入图片描述
分别将A1和A2类型的实例赋值于他们的父类类型A,使用A调用他们。
注意:A只能使用A拥有的属性和方法,如果A1类型和A2类型有自己的属性和方法 A类型是无法使用的。

第三部分:接口

接口

使用implements关键词来实现接口。接口可以是普通类,也可以是抽象类。接口是一种约定规范,告诉你需要什么,你自己去实现。比如说小说,小说的基本要素是小说名称和小说内容,接口它告诉你了,至于具体的书名和内容是什么,就要你直接去实现了,实现完了 你还可以再加一些其他的特征 ,例如 作者信息,大纲,封面等等。
实现一个接口,必需实现它的所有方法和属性,如果接口中已经写了实现 必需要重写。
例子:普通类作为接口,
在这里插入图片描述
抽象类作为接口,除了普通方法作为接口的功能以外,还有就是可以定义抽象类,在这里插入图片描述
其实也都是差不多的。
这里要单独说明一下抽象类和接口的区别。抽象类可以作为接口。抽象类可以使用extends继承,也可以使用implements作为接口来实现。但不管是继承还是作为接口实现,子类都必需实现抽象类。抽象类中可以有属性,普通函数和抽象函数,继承的时候 只需要实现抽象函数即可,并且还可以其中的普通方法。但是作为接口的时候,可以理解为所有的方法都是抽象函数,一律不管 全部重写 重新实现。

extends抽象类 和 implements的区别:

  1、如果要复用抽象类里面的方法,并且要用抽象方法约束自类的话我们就用extends继承抽象类

  2、如果只是把抽象类当做标准的话我们就用implements实现抽象类

一个类实现多个接口

Dart是单继承的语言。在Dart中一个类可以实现多个接口,但是只能继承一个类。
在这里插入图片描述

第四部分:Mixins

上述说了,Dart中类只能继承一个父类。但是可以用with关键词使用Mixins的特征实现类似多继承的功能。
mixins的中文意思是混入,就是在类中混入其他功能。

使用mixins的条件:
	  1、作为mixins的类只能继承自Object,不能继承其他类
	  2、作为mixins的类不能有构造函数
	  3、一个类可以mixins多个mixins类
	  4、mixins绝不是继承,也不是接口,而是一种全新的特性

在这里插入图片描述
使用with的同时,也可以使用extends来继承,在这里插入图片描述
如上图场景,如果A、B、D类中有重复的函数或者属性怎么办,这种情况,后来的会把前面的给覆盖,前后顺序是D-A-B,也就是如果他们有同名方法 最后执行的是B的。

结束

好了,这节讲了抽象类、多态、接口、和Mixins四大部分,希望对你有帮助。
下节预告
讲解Dart中的泛型。

好了,这节就分享这么多了,我们下节再见,祝大家编程愉快!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值