// 自执行函数的作用是形成单独模块(块作用域),
// 防止此文件的变量或方法与其他文件的属性或方法冲突
(function () {
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
sayHello() {
console.log(this.name);
// 旺财
console.log('动物在叫~');
// 动物在叫~
}
}
class Dog extends Animal {
age: number;
constructor(name: string, age: number) {
// 如果在子类中写了构造函数,相当于重写了父类的构造函数。
// 在子类构造函数中必须对父类的构造函数进行调用,
// 否则父类的构造函数不会执行
super(name);
this.age = age;
}
sayHello() {
// 在类的方法中super就表示当前类的父类
super.sayHello();
console.log('汪汪汪汪!');
// 汪汪汪汪!
console.log(`${this.name}${this.age}岁了。`);
// 旺财3岁了。
}
}
const dog = new Dog('旺财', 3);
dog.sayHello();
})();