(function () { class Animal { // 需要先定义,才能在constructor中this指向 name: string; age: number; // 构造函数,会在对象创建时调用 // new Dog() 的时候,就会调用constructor constructor(name: string, age: number) { /** * 在实例方法中,this就表示当前的实例 * 在构造函数中当前对象就是当前新建的那个对象 * 可以通过this指向新建的对象中添加属性 */ this.name = name; this.age = age; } bark() { console.log(`Dog ${this.name} is barking, woofing...`) } } // 定义一个表示够的类 // 使Dog类继承Animal的属性 /** * Dog extends Animal * 此时Animal被称为父类, Dog被称为子类 * 使用继承后,子类将会继承父类所有的属性和方法 * -通过继承可以将多个类*有的代码卸载一个勒种,这样只需要写一次即可让所有子类都同时有父类中的属性和方法 * -如果希望在子类中添加一些弗雷中没有的属性或方法,直接加就好 * -如果在子类中添加了和父类方法名一致的方法,则子类方法会覆盖父类方法, 这种子类覆盖父类方法的形式,称之为 方法重写 */ class Dog extends Animal { run() { console.log(`${this.name} is running...`) } } class Cat extends Animal { bark() { console.log(`Cat ${this.name} is miao....`) } } const dog = new Dog(‘Tom‘, 4); const cat = new Cat(‘Max‘, 3); console.log(dog); dog.bark(); dog.run(); cat.bark(); })()