Dart 语法要点(3) —— 类和对象
Dart 是一种面向对象的编程语言,支持类和基于混入(Mixin)的继承机制。在 Dart 中除 Null 以外的所有类都继承自 Object 类。
1. 基本用法
Dart 中类的基本用法和大部分面向对象语言差不多,这里不作详细介绍,直接从一个简单的示例开始:
// 导入依赖库
import 'dart:math';
class Point {
// 成员变量
double? x; // 默认值初始值为null
double y = 0; // 初始值为0
// 构造函数
Point(double x, double y) {
this.x = x;
this.y = y;
}
//成员方法
double distanceTo(Point other) {
double dx = (this.x ?? 0) - (other.x ?? 0);
var dy = this.y - other.y;
return sqrt(dx * dx + dy * dy);
}
// 静态方法
static double distanceBetween(Point a, Point b) {
return a.distanceTo(b);
}
// 重写toString方法
@override
String toString() {
return 'Point($x, $y)';
}
}调用也很简单,代码如下:
void main() {
Point p1 = new Point(0, 0);
Point p2 = new Point(3, 4);
print(p1.distanceTo(p2)); // 5.0
print(Point.distanceBetween(p1, p2)); // 5.0
print(p1); // Point(0.0, 0.0)
print(p2); // Point(3.0, 4.0)
print(p2.y); // 4.0
}单看上述代码,几乎分不清究竟是 JavaScript、Java, 还是 Dart,下文主要介绍一些 Dart 相对独特的地方。