import 'dart:math'; /** * 一、能够声明抽象类 * 二、能够在一个文件中定义多个类。 * 三、dart.math是Dart的核心库之一。其余核心库包括dart:core,dart:async,dart:convert和dart:collection。 * 四、在Dart 1.x中,核心库常量是大写(PI); 在Dart 2中,它们是小写的(pi)。 */ abstract class Shape { num get area; } class Cicle implements Shape { final num radius; Cicle(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); } /** * 工厂方法 * 一、遇到异常时,DartPad会报告Uncaught。要查看更有用的信息,请将代码包装在try-catch语句中,而后打印异常 */ Shape shapeFactory(String type) { if (type == 'cicle') return Cicle(2); if (type == 'square') return Square(2); throw 'Can\'t create $type'; } main() { final cicle = shapeFactory('cicle'); final square = shapeFactory('square'); print(cicle.area); print(square.area); }