Dart 有类变量的概念吗?

Rez*_*ney 3 dart

在浏览Dart 语言之旅时,我在构造函数部分看到了这个示例:

class Point {
  num x, y;

  Point(num x, num y) {
    // There's a better way to do this, stay tuned.
    this.x = x;
    this.y = y;
  }
}
Run Code Online (Sandbox Code Playgroud)

谈论实例变量。来自Python,这最初让我有点困惑,因为我认为这num x, y;是一种类变量。

Dart 有类变量的概念吗?

Gün*_*uer 5

不确定“类变量”是什么意思。
我假设你指的是静态变量。

静态变量每个类存在一次,而实例变量每个实例存在一次。

class Point {
  static num x, y;

  fooMethod() {
    print('$x, $y');
  }
}
Run Code Online (Sandbox Code Playgroud)

在声明它们的类中,无需前缀即可访问它们。从其他任何地方都可以使用类名称作为声明它们的前缀来访问它们。

void main() {
  print(Point.x);
}
Run Code Online (Sandbox Code Playgroud)

此外,子类中声明字段的类前缀也是必需的,因为它们不是继承的。

class CustomPoint extends Point {

  barMethod() {
    print('${Point.x}, ${Point.y}');
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 您能否详细说明一下 Dart 静态变量与 Python 类变量有何不同?难道仅仅是因为 Python 和 Java 一样,允许通过实例访问静态/类变量? (2认同)