Dart学习笔记(十二)

57 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Dart 类中的静态成员 静态方法

Dart中的静态成员:

  1. 使用static 关键字来实现类级别的变量和函数
  2. 静态方法不能访问非静态成员,非静态方法可以访问静态成员
 class Person {
 
   static String name = "张三";
 
   static void show() {
 
     print(name);
 
   }
 
 }
 
 main() {
 
   print(Person.name); // 访问静态属性
 
   Person.show(); // 访问静态方法
 
 }
class Person {
 
  static String name = "张三";
 
  int age = 20;
 
  static void show() {
 
    print(name);
 
  }
 
  /** 非静态方法可以访问静态成员以及非静态成员 */
 
  void printInfo() {
 
    print(name); // 访问静态属性
 
    print(this.age); // 访问非静态属性
 
    show(); // 调用静态方法
 
  }
 
 
  /** 静态方法访问静态成员 */
 
  static void printUserInfo() {
 
    print(name); // 静态属性
 
    show(); // 静态方法
 
 
    // print(this.age); // 静态方法无法访问非静态属性
 
    // print(age); // 静态方法无法访问非静态属性
 
    // this.printInfo(); // 静态方法无法访问非静态方法
 
    // printInfo(); // 静态方法无法访问非静态方法
 
  }
 
}
 
main() {
 
  /** 非静态方法调用 需要先实例化 */
 
  Person p = new Person();
 
  p.printInfo();
 
 
 
  /** 静态方法 */
 
  Person.printUserInfo();
 
}

Dart 对象操作符

Dart中的操作符对象

  • ?   条件运算符
  • as  类型转换
  • is  类型判断
  • ..  级联操作

代码如下:

class Person {
 
  String name;
 
  int age;
 
  Person(this.name, this.age);
 
  void printInfo() {
 
    print("${this.name}------${this.age}");
 
  }
 
}
 
main() {
 
  /** ? 条件运算符 */
 
   Person p1;
 
   p1?.printInfo();   //已被最新的dart废弃
 
 
 
   Person p2 = new Person('张三', 20);
 
   p2?.printInfo();   //已被最新的dart废弃
 
 
 
  /** as 类型转换 */
 
  var p3;
 
  p3 = '';
 
  p3 = new Person('张三', 25);
 
  (p3 as Person).printInfo(); // 张三------25
 
 
 
  /** is 类型判断 */
 
  Person p4 = new Person('张三', 21);
 
  if(p4 is Person) {
 
    p4.name = '李四';
 
  }
 
  p4.printInfo(); // 李四------21
 
 
 
  // print(p is Object); // true
 
 
 
  /** .. 级联操作 */
 
  // 原始写法
 
  Person p5 = new Person('张三1', 20);
 
  p5.printInfo(); // 张三1------20
 
  p5.name = '张三2';
 
  p5.age = 30;
 
  p5.printInfo(); // 张三2------30
 
 
 
  // ..写法
 
  Person p6 = new Person('张三1', 20);
 
  p6.printInfo(); // 张三1------20
 
  p6..name = '张三2'
 
   ..age = 30
 
   ..printInfo(); // 张三2------30
 
}