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); }