类的继承 和重写

/*
   类的继承  (封装 多态 继承)
    1 子类使用extends 关键词 来继承父类
    2 子类会继承父类里可见的属性和方法 可是不会继承构造函数
    3 子类能复写父类的方法  getter 和 setter

*/
class Person {
  String name;
  int age = 20;
  Person(this.name, this.age);
  Person.xxx(this.name, this.age);
  void printInfo() {
    print("${this.age}----${this.name}");
  }

  work() {
    print("${this.name}在工做...");
  }
}

class Web extends Person {
  String sex;
  Web(String name, int age, String sex) : super(name, age) {
    this.sex = sex;
  }
  // Web(String name, int age, String sex) : super.xxx(name, age) {
  //   this.sex = sex;
  // }

  run() {
    print("${this.name}---${this.age}---${this.sex}");
    super.work(); // 子类调用父类的方法
  }

  // 覆写父类的方法
  @override // 能够写 也能够不写,建议 写上
  void printInfo() {
    print("姓名:${this.name}----年龄:${this.age}");
  }

  @override
  work() {
    print(" ${this.name}的工做是写代码");
  }
}

void main() {
  Web w = new Web('张三', 12, '男');
  print(w.name); // 张三
  // w.printInfo(); // 12----张三

  w.run(); // 张三---12---男

  // w.work(); // 张三在工做...

  // w.printInfo(); // 姓名:张三----年龄12

  // w.work(); //  张三的工做是写代码
}
相关文章
相关标签/搜索