Dart接口的实现

Dart 语言并没有提供 interface 关键字,但是每一个类都隐式地定义了一个接口。

import 'dart:math';

abstract class Shape {
  factory Shape(String type) {
    if (type == 'circle') return Circle(2);
    if (type == 'square') return Square(2);
    throw 'Can\'t create $type.';
  }
  num get area;
}

class Circle implements Shape {
  final num radius;
  Circle(this.radius);
  num get area => pi * pow(radius, 2);
}

class Square implements Shape {
  final num side;
  Square(this.side);
  num get area => pow(side, 2);
}

class CircleMock implements Circle {
  num area;
  num radius;
}

main() {
  final circle = Shape('circle');
  final square = Shape('square');
  print(circle.area);
  print(square.area);
}

扩展 Circle 类,增加一个 CircleMock:

class CircleMock implements Circle {}

将会看到一个 "Missing concrete implementations" 的错误,添加两个实例变量 area 和 radius 即可修复这个问题

class CircleMock implements Circle {
  num area;
  num radius;
}
上一篇 Dart创建工厂模式
下一篇 Dart中的函数式编程
目录
文章列表
1 ElasticSearch 7 学习(2)索引基本操作
ElasticSearch 7 学习(2)索引基本操作
2
Tinker热更新快速集成
Tinker热更新快速集成
3
Vagrant使用
Vagrant使用
4
Android集中式登录架构设计思想
Android集中式登录架构设计思想
5
Swift UI - 搜索条(UISearchBar)的用法
Swift UI - 搜索条(UISearchBar)的用法
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。