📜  Dart – 静态关键字

📅  最后修改于: 2021-09-02 05:07:46             🧑  作者: Mango

static关键字用于全局数据成员的内存管理。 static 关键字可以应用于类的字段和方法。静态变量和方法是类的一部分,而不是特定实例。

  • static 关键字用于类级别的变量和方法,对于类的每个实例都是相同的,这意味着如果数据成员是静态的,则可以在不创建对象的情况下访问它。
  • static 关键字允许数据成员在类的不同实例之间保留值。
  • 无需创建类对象来访问静态变量或调用静态方法:只需将类名放在静态变量或方法名之前即可使用它们。

Dart静态变量

静态变量属于类而不是特定实例。静态变量对类的所有实例都是通用的:这意味着只有静态变量的一个副本在类的所有实例之间共享。静态变量的内存分配在类加载时只在类区域中发生一次。

声明静态变量

可以使用 static 关键字声明静态变量,后跟数据类型,然后是变量名

Syntax: static [date_type] [variable_name];

访问静态变量

静态变量可以直接从类名本身访问,而不是创建它的实例。

Syntax: Classname.staticVariable;

Dart静态方法

静态方法属于 ta 类而不是类实例。静态方法只允许访问类的静态变量,并且只能调用类的静态方法。通常,当我们希望在不需要创建实例的情况下被其他类使用时,实用方法被创建为静态方法。

声明静态方法

可以使用 static 关键字、返回类型和方法名称来声明静态方法

Syntax:

static return_type method_name()
{
    // Statement(s)
}

调用静态方法

静态方法可以直接从类名本身调用,而不是创建它的实例。

Syntax: ClassName.staticMethod();

示例 1:

Dart
// Dart Program to show
// Static methods in Dart
class Employee {
  static var emp_dept;
  var emp_name;
  int emp_salary;
  
  // Function to show details
  // of the Employee
  showDetails() {
    print("Name of the Employee is: ${emp_name}");
    print("Salary of the Employee is: ${emp_salary}");
    print("Dept of the Employee is: ${emp_dept}");
  }
}
  
// Main function
void main() {
  Employee e1 = new Employee();
  Employee e2 = new Employee();
  Employee.emp_dept = "MIS";
  
  print("GeeksforGeeks Dart static Keyword Example");
  e1.emp_name = 'Rahul';
  e1.emp_salary = 50000;
  e1.showDetails();
  
  e2.emp_name = 'Tina';
  e2.emp_salary = 55000;
  e2.showDetails();
}


Dart
// Dart program in dart to
// illustrate static method
class StaticMem { 
   static int num;  
   static disp() { 
      print("#GFG the value of num is ${StaticMem.num}")  ; 
   } 
}  
void main() { 
   StaticMem.num = 75;  
    
   // initialize the static variable } 
   StaticMem.disp();   
    
   // invoke the static method 
}


输出:

示例 2:

Dart

// Dart program in dart to
// illustrate static method
class StaticMem { 
   static int num;  
   static disp() { 
      print("#GFG the value of num is ${StaticMem.num}")  ; 
   } 
}  
void main() { 
   StaticMem.num = 75;  
    
   // initialize the static variable } 
   StaticMem.disp();   
    
   // invoke the static method 
}

输出:

#GFG the value of num is 75