为什么我们应该在 dart 中使用 static 关键字代替抽象?

why we should use static keyword in dart in place of abstract?

我正在我的 flutterfire 项目中准备一个 class 我想使用一些不能进一步改变的方法所以我想知道 Dart 中 static 关键字的概念?

“静态”表示成员在 class 本身而不是 class 的实例上可用。这就是它的全部含义,它没有用于任何其他用途。 static 修改 members.

静态方法 静态方法(class 方法)不对实例进行操作,因此无权访问 this。但是,他们确实可以访问静态变量。

void main() {

 print(Car.numberOfWheels); //here we use a static variable.

//   print(Car.name);  // this gives an error we can not access this property without creating  an instance of Car class.

  print(Car.startCar());//here we use a static method.

  Car car = Car();
  car.name = 'Honda';
  print(car.name);
}

class Car{
static const numberOfWheels =4;
  Car({this.name});
  String name;
  
//   Static method
  static startCar(){
    return 'Car is starting';
  }
  
}

dart 中的 static 关键字用于声明仅属于 class 而不是瞬间的变量或方法,这意味着 class 只有该变量或方法的一个副本以及那些静态变量class 变量)或静态方法(class 方法)不能被 class.

创建的实例使用

例如,如果我们将 class 声明为

    class Foo {

static String staticVariable = "Class variable";
final String instanceVariable = "Instance variable";

static void staticMethod(){
  print('This is static method');
}

void instanceMethod(){
  print('instance method');
}
}`

这里要记住的是静态变量只创建一次,class 创建的每个实例都有不同的实例变量。因此你不能从 class 实例中调用静态变量。 以下代码有效,

Foo.staticVariable; 
Foo().instanceVariable;
Foo.staticMethod();
Foo().instanceMethod();

以下代码会报错

Foo().staticVariable;
Foo.instanceVariable;
Foo().staticMethod;
Foo.instanceMethod

静态变量和方法的使用

当您具有与 class 相关的常量值或常用值时,您可以使用静态变量。

您可以在此处阅读更多内容 - https://dart.dev/guides/language/language-tour#class-variables-and-methods