美文网首页
Dart基础语法<八> 类(中)

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

作者: 果汁味Studio | 来源:发表于2021-01-02 19:43 被阅读0次

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

  • Getters 和 Setters
  • 可覆写的操作符
  • 抽象类
  • 接口
Getters 和 Setters
  • Dart中每个实例变量都默认隐式配置了 getter, 如果变量非 final则还隐式设置了一个 setter。
  • 可以通过实现 getter 和 setter 创建新的属性, 使用 getset 关键字定义 getter 和 setter。
class Rect {
  int left;
  int right;
  int top;
  int bottom;

  int get width => right - left;

  int get height => bottom - top;

  Rect(this.left, this.right, this.top, this.bottom);
}

void main() {
  Rect rect = Rect(0, 10, 0, 10);
  print(rect.width);
  print(rect.height);
}
可覆写的操作符

即使用关键字operator 重新定义已有操作符的实现逻辑(如List就重写了 [])。以下是支持覆写的操作符: < + | [] > / ^ []= <= ~/ & ~ >= * << == % >>

import 'dart:math';

class Rect {
  int left;
  int right;
  int top;
  int bottom;

  int get width => right - left;

  int get height => bottom - top;

  Rect(this.left, this.right, this.top, this.bottom);

  Rect operator +(Rect rect) {
    int plusLeft = min(rect.left, left);
    int plusRight = max(rect.right, right);
    int plusTop = min(rect.top, top);
    int plusBottom = max(rect.bottom, bottom);
    return new Rect(plusLeft, plusRight, plusTop, plusBottom);
  }
}

void main() {
  Rect rect = Rect(0, 10, 0, 10);
  Rect plusRect = rect + Rect(20, 60, 10, 50);
  print(plusRect.width);
  print(plusRect.height);
}

如上述demo,覆写+操作符,定义生成两四边形最大的矩形区域。运行结果为宽度60 高度50

抽象类
  • Java一样,Dart修饰抽象类的关键字也是abstract
  • 抽象类允许出现无方法体的方法(即抽象方法),抽象方法无须使用abstract修饰。
abstract class Parent {
  String setupName();
  int setupAge();
}
  • 抽象类不能被实例化,但如果定义工厂构造方法可以返回子类。
abstract class Parent {
  String name;

  void showName();

  Parent(String name) {
    this.name = name;
  }

  factory Parent.son(String name) {
    return new Son(name);
  }
}

class Son extends Parent {
  Son(String name) : super(name);

  @override
  void showName() {
    print(name);
  }
}

void main() {
  Parent parent = new Parent.son("Juice");
  parent.showName();
}
接口
  • Dart中没有interface关键字,这点与Java不同。
  • Dart也是只支持单继承,但支持多实现。
  • Dart中每个类都隐式定义成接口。
class A {
  void printInfo() {
    print('A');
  }
}

class B implements A {
  @override
  void printInfo() {
    print('B');
  }
}

void main() {
  B b = B();
  b.printInfo();
}

运行结果为B

相关文章

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

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

  • Flutter笔记--Dart任务调度

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

  • Flutter 代码规范整理

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

  • dart入门潜修系列教程

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

  • Flutter学习笔记

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

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

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

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

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

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

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

  • dart系列之:dart类的扩展

    简介 虽然dart中的类只能有一个父类,也就是单继承的,但是dart提供了mixin语法来绕过这样限制。 今天,和...

  • Flutter-Dart基础语法入门

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

网友评论

      本文标题:Dart基础语法<八> 类(中)

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