Dart中的静态成员

  1. 使用static关键字来实现类级别的变量和函数
  2. 静态方法不能访问非静态成员,非静态方法可以访问静态成员
  3. 静态方法中不能使用this关键字
  4. 类中的常量需要使用static const声明
  5. 静态成员不能通过对象来访问,而是通过类来访问
  6. 静态方法通常用于为工具类创建方法
class Person {
  static String name = '张三';
  int age = 20;
  static void show() { // 静态方法不能访问非静态成员
    print(name);
  }
  void printInfo() { // 非静态方法可以访问静态成员
    print(name);
    print(this.age);
  }
}
void main() {
  print(Person.name);
  Person.show();
  Person p = new Person();
  p.printInfo();
}

Dart中的对象操作符

  1. Dart中的对象操作符有哪些
    • 条件运算符: ?
    • 类型转换: as
    • 级联操作符: ..
    • 类型判断: is、is!
class Person {
  String name;
  int age;
  Person(this.name, this.age);
  void printInfo() {
    print("${this.name}---${this.age}");
  }
}
void main() {
  Person p1 = new Person('张三', 20);
  p1.printInfo();
  p1.name = '李四';
  p1.age = 30;
  p1.printInfo();
  // 条件运算符
  String name = p1.name;
  String name1 = p1?.name;
  print(name);
  print(name1);
  // 类型转换
  var p2;
  p2 = '';
  p2 = new Person('王五', 40);
  (p2 as Person).printInfo();
  // 级联操作符
  Person p3 = new Person('赵六', 50);
  p3..name = '田七'
    ..age = 60
    ..printInfo();
  // 类型判断
  if (p3 is Person) {
    p3.printInfo();
  }
  if (p3 is! Person) {
    print('不是Person类型');
  }
}

Dart中的类的继承

  1. Dart中的类的继承
    • 使用关键字extends继承一个类
    • 子类会继承父类可见的属性和方法,不会继承构造方法
    • 子类能复写父类的方法,getter和setter
// class Person {
//   String name='张三';
//   int age=20;
//   void printInfo() {
//     print("${this.name}---${this.age}");
//   }
// }
// class Web extends Person{
// }
class Person {
  String name;
  int age;
  Person(this.name, this.age);
  void printInfo() {
    print("${this.name}---${this.age}");
  }
}

class Web extends Person{
  Web(String name, int age) : super(name, age);
}

void main() {
  // Web w = new Web();
  // print(w.name);
  // w.printInfo();
    Web w = new Web('李四', 30);
    w.printInfo();
}
  1. super用法
class Person {
  String name;
  int age;
  Person(this.name, this.age);
  void printInfo() {
    print("${this.name}---${this.age}");
  }
}
class Web extends Person{
  String sex; // 子类中的属性
  // 构造函数
  Web(String name, num age, String sex) : super(name, age){
    this.sex = sex;
  }
  run(){ // 子类中的方法
    print("${this.name}---${this.age}---${this.sex}");
  }
}

void main() {
  Web w = new Web('李四', 30, '男');
  w.printInfo();
  w.run();
}

Dart类的继承覆写父类的方法

  1. 子类和父类有同名的属性或者方法时,会覆盖父类的属性和方法
  2. 子类覆盖父类的方法时,需要加上@override注解
  3. 子类覆盖父类的方法时,方法参数要一致
class Person {
  String name;
  num age;
  Person(this.name, this.age);
  void printInfo() {
    print("${this.name}---${this.age}");
  }
  work() {
    print("${this.name}在工作...");
  }
}

class Web extends Person{
  Web(String name, num age) : super(name, age);
    run() {
      super.work(); // 调用父类的方法
    }
    @override // 可以写也可以不写,建议写上
    void printInfo() {
        print('姓名:${this.name}---年龄:${this.age}');
    }
    @override
    work() {
        print("${this.name}在学习...");
    }
}

void main() {
  Web w = new Web('李四', 30);
  w.printInfo();
  w.work();
}

results matching ""

    No results matching ""