Dart学习笔记(十三)

49 阅读1分钟

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

Dart 类的继承-简单继承

面向对象的三大特性: 封装、继承、多态

Dart中的类的继承

  1. 子类使用extends关键字来继承父类
  2. 子类会继承父类里面可见的属性和方法 但是不会继承构造函数
  3. 子类能复写父类的方法 getter和setter
class Person {
 
  String name = '张三';
 
  int age = 26;
 
  void printInfo() {
 
    print("${this.name} ------ ${this.age}");
 
  }
 
}
 
class Web extends Person {
 
}
 
main() {
 
  Web w = new Web();
 
  print(w.name); // 张三
 
  w.printInfo(); // 张三 ------ 26
 
}

Dart 类的继承 super关键词的使用 实例化子类给父类构造函数传参

面向对象的三大特性: 封装、继承、多态

Dart中的类的继承

  1. 子类使用extends关键字来继承父类
  2. 子类会继承父类里面可见的属性和方法 但是不会继承构造函数
  3. 子类能复写父类的方法 getter和setter
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) {
 
 
  }
 
}
 
main() {
 
  // Person p = new Person('张三', 21);
 
  // p.printInfo(); // 张三 ------ 21
 
 
  // Person p1 = new Person('李四', 31);
 
  // p1.printInfo(); // 李四 ------ 31
 
 
  Web w = new Web('王五', 37);
 
  w.printInfo(); // 王五 ------ 37
 
}

注意: 最新版本的dart中需要初始化不可为null的实例字段,如果不初始化的话需要在属性前面加上late

class Person {
 
  String name;
 
  int age;
 
  Person(this.name, this.age);
 
  void printInfo() {
 
    print('${this.name} ------ ${this.age}');
 
  }
 
}
 
class Web extends Person {
 
  late String sex;
 
  Web(String name, int age, String sex) : super(name, age) {
 
    this.sex = sex;
 
  }
 
  run() {
 
      print('${this.name} ------ ${this.age} ------ ${this.sex}');
 
  }
 
}
 
main() {
 
  // Person p = new Person('张三', 21);
 
  // p.printInfo(); // 张三 ------ 21
 
 
 
  // Person p1 = new Person('李四', 31);
 
  // p1.printInfo(); // 李四 ------ 31
 
 
 
  Web w = new Web('王五', 37, '男');
 
  w.printInfo(); // 王五 ------ 37
 
  w.run(); // 王五 ------ 37 ------ 男
 
}