美文网首页记录自学flutter点点滴滴
Flutter 学习之旅(四) 类、接口和继承以及mixi

Flutter 学习之旅(四) 类、接口和继承以及mixi

作者: Tsm_2020 | 来源:发表于2020-07-27 14:34 被阅读0次

类与继承

Dart 中类和java 相似,都是用class定义,抽象类用abstract 标识,抽象类中可以包含已经实现的方法,也可以包含未实现的方法,

与java不同的是,抽象方法不需要abstract 抽象类的关键字,只需要该方法未实现即可

继承也与java的功能相似,用extends 定义 ,子类可以继承父类的方法,如果想要修改可以重写.

例子

Base抽象类中包含了三个已经实现的方法,和一个未实现的抽象方法,

BClass  继承了 Base  并重写了 a(),b(),c()方法,实现了Base类未实现的方法d();

接口

Dart 中其实并没有接口的概念,任何class 都可以作为接口被其他类实现,这里面有一个比较有意思的地方,

AClass 中已实现的方法,当AClass 作为接口被EClass实现的的时候, EClass无法调用AClass中已经实现的方法,即super.method();这个不能用,感觉这个概念和java类似,java是在接口中压根就没有实现,所以掉用不了,dart中虽然实现了,但是调用不了

也就是说作为接口被实现的时候,他所实现的方法不能被实现他的类调用,而且EClass 中必须重写所有AClass方法

所以感觉在实际开发过程中,如果一个类想要当做接口被实现,利用 抽象类  定义抽象方法,用这个抽象类作为接口被实现应该是最好的解决方法了

mixins

mixins  混入,  这个是dart新引入的概念,  他的写法是

class cls extends cls1  with cls2,cls3{

}

如果cls1与  cls2和cls3中存在相同命名的方法,他的基础执行顺序是从右到左依次执行,

我们还是以上面  Base  AClass  BClass  为例 ,为了更好的区分,我们再引入另一个类AClass2  他有了 a()方法和g()方法,  AClass 实现了  a(),b() 两个方法 ,Base 中  有a(),b(),c(),d() 四个方法

其中a()方法为所有类中都包含的方法,如果想要执行谁的a()方法,按照右到左的顺序执行,哪个类的排名应该在最后,

而且已with 为关键字所指向的类,不能含有构造方法,不能继承除了Object的其他类,也就是无法继承其他类,否则报错,

例子

                        这个是简写

这个是完整的写法,

如果某个类想要简写,就必须除了拼装他所需要的类,不能再含有其他属性,

main方法执行的代码

结果

分析一下为什么结果会是这样,

class CClass = BClass with AClass,AClass2;

a():这个方法是所有混入的类中共有的方法,按照从右到左的有效顺序,a()方式应该选择ACass2的方法,所有打印的日志为  AClass2  a();

b():这个方法为AClass 与Base 方法共有的方法,按照从右到左的顺序,应该执行AClass 中的b(),所有打印的是AClass b();

c():这个方法为BClass类中的方法,所以执行BClass中的方法,先执行 super.c(),在执行 BClass.c()方法

d();与g()方法都是只有一个类中有,执行有这个方法的类就可以了

我学习flutter的整个过程都记录在里面了

https://www.jianshu.com/c/36554cb4c804

最后附上demo 地址

https://github.com/tsm19911014/tsm_flutter

相关文章

  • Flutter 学习之旅(四) 类、接口和继承以及mixi

    类与继承 Dart 中类和java 相似,都是用class定义,抽象类用abstract 标识,抽象类中可以包含已...

  • kotlin继承

    继承语法 类和接口的继承通过 : 来实现 接口 kotlin 的接口可以包含抽象方法,以及方法的实现,接口可以有属...

  • Kotlin知识归纳(四) —— 接口和类

    Kotlin的类和接口与Java的类和接口存在较大区别,本次主要归纳Kotlin的接口和类如何定义、继承以及其一些...

  • Java多态的具体体现

    面向对象编程有四;个特征:抽象,封装,继承,多态。 多态有四种体现形式: 1. 接口和接口的继承。 2. 类和类的...

  • (一)new()& 构造函数

    方法 new方法 (之前学习) 类名 对象名称 =new 类名() 类继承new() 和接口继承new() 因为继...

  • Kotlin 类、对象和接口(三)——编译器生成的方法:数据类和

    Kotlin 类、对象和接口(一)——定义类继承结构Kotlin 类、对象和接口(一)——定义类继承结构 Java...

  • 抽象类和接口的区别

    抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。 1、抽象类和接口都不能直接...

  • 看一眼就能学会的JS实现继承笔记

    前言 学习过 java 的同学应该都知道,常见的继承有接口继承和实现继承,接口继承只需要继承父类的方法签名,实现继...

  • 接口与继承复习

    接口和继承 类继承--->子类完全继承父类特点 抽象类继承--->继承时抽象的部分不同的子类可以有不同的实现 接口...

  • 接口与实现

    接口是比“abstract类”更抽象的类,在java中,类是单继承的,而接口可以实现多继承 接口包含接口声明和接口...

网友评论

    本文标题:Flutter 学习之旅(四) 类、接口和继承以及mixi

    本文链接:https://www.haomeiwen.com/subject/tudzlktx.html