美文网首页Flutter
Dart基础语法<九> 类(下)

Dart基础语法<九> 类(下)

作者: 果汁味Studio | 来源:发表于2021-01-03 10:18 被阅读0次

本节主要记录一下Dart中关于类的使用

  • 可调用的类
  • 混合Mixins
可调用的类

如果 Dart 类实现了 call() 函数则可以当做方法来调用。

class Callable {
  void call(int a, int b) {
    print(a + b);
  }
}

void main() {
  Callable callable = Callable();
  callable(10, 15);
}

运行结果为25,直接执行了call()方法

混合Mixins
  • Mixins 是在多类继承中重用一个类代码的方法。
  • 被Mixin(混入)的类不能有构造函数。
  • 用法即为with + 混入的类, 如下demo中类Cabc三个方法。
class A {
  void a() => print("Aa");

  void b() => print("Ab");

}

class B {
  void a() => print("Ba");

  void b() => print("Bb");
}

class C with A, B {
  void c() => print("C");
}

class D with B, A {
  void d() => print("D");
}

void main() {
  C c = C();
  D d = D();
  c.a();
  d.a();
  c.b();
  d.b();
  c.c();
  d.d();
}
  • 由于A类与B类存在相同的方法a,具体执行则由最后混入的类确定(即B类),故运行结果输出Ba Aa Bb Ab C D

  • 继承与mixins是兼容的,如下demo中R1 R2类均继承类C,同时支持MixinA B

class A {
  void f() => print("A");
}

class B {
  void f() => print("B");
}

class C {
  void f() => print("C");
}

class R1 extends C with A, B {}

class R2 extends C with B, A {}

class R3 extends C with B, A {
  @override
  f() {
    super.f();
  }
}

void main() {
  R1 r1 = R1();
  R2 r2 = R2();
  R3 r3 = R3();
  r1.f();
  r2.f();
  r3.f();
}

运行结果为B A A
注:对比R2 R3类, f重写方法调用的super,实际调用并非父类C的方法(和想像的不一样)。

  • Mixins弥补了接口和继承的不足(继承只支持单继承,而接口无法复用实现),可以多混入且能复用混入类的具体实现。
    如下demo,可以设计出同时带a b 两个方法的抽象类D,同时无须像C类那样必须实现b方法
abstract class A {
  void a();
}

abstract class B {
  void b();
}

abstract class C extends A implements B {
  @override
  void b() => print("B");
}

abstract class D with A, B {}

相关文章

  • Dart基础语法<九> 类(下)

    本节主要记录一下Dart中关于类的使用 可调用的类 混合Mixins 可调用的类 如果 Dart 类实现了 cal...

  • Dart语法(下)

    前文链接: Dart简介 Dart语法(上) 内容: 函数(方法)函数定义及各类函数;函数参数;闭包 面向对象定义...

  • dart入门潜修系列教程

    dart入门潜修基础篇之基本语法和内置类型dart入门潜修基础篇之方法dart入门潜修基础篇之操作符dart入门潜...

  • Flutter笔记--Dart任务调度

    dart异步代码是如何执行的 在Dart基础语法一文中我们了解了dart的一些基础语法,包括异步代码的使用。在da...

  • Flutter学习笔记

    Dart基础语法 一、选择开发工具 首先需要安装Dart SDK(https://www.dart-china.o...

  • Dart基础语法<七> 类(上)

    Dart 作为一门面向对象的编程语言,每个对象都是一个类的实例,所有的类都继承于 Object类。本节主要记录一下...

  • Dart基础语法<八> 类(中)

    本节主要记录一下Dart中关于类的使用 Getters 和 Setters 可覆写的操作符 抽象类 接口 Gett...

  • Flutter一:Flutter简介、环境配置

    以项目驱动,中间穿插各个组件 第一天:Flutter简介、环境搭建、Dart语法基础一 第二天:Dart语法基础二...

  • Flutter 代码规范整理

    Dart 语法简介 Flutter是使用Dart语言开发的。Dart语言是基于类的纯面向对象语言。Dart 中的所...

  • Flutter-Dart基础语法入门

    Dart语法基础 Dart语言简介 Dart是Google推出的一门编程语言,最初是希望取代Javascript运...

网友评论

    本文标题:Dart基础语法<九> 类(下)

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