類的繼承 和重寫

/*
   類的繼承  (封裝 多態 繼承)
    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(); //  張三的工做是寫代碼
}
相關文章
相關標籤/搜索