TS中Class类的继承

我们有下面一个代码,其中创建了一个Dog类和Cat类,这两个类中都有姓名和年龄属性和bark方法

TypeScript 复制代码
class Dog {
  name: string;
  age: number;
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
  bark() {
    console.log(this.name + "汪汪汪");
  }
}

class Cat{
  name: string;
  age: number;
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
  bark() {
    console.log(this.name + "喵喵喵");
  }
}

let dog = new Dog("旺财", 5);
let cat = new Cat("咪咪", 3);
dog.bark();  // 打印:旺财汪汪汪
cat.bark();  // 打印:咪咪喵喵喵

但是我们把一个代码写了两次,冗余度增加。

一、使用extends关键字继承父类

我们可以将上面两个类的公共特征提取出来组成一个新的Animal类。

然后在创建Dog类和Cat类的时候继承Animal类即可。

子类继承父类的语法格式如下:

class 子类 extends 父类 { }

TypeScript 复制代码
class Animal {
  name: string;
  age: number;
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
  bark() {
    console.log(this.name + "在叫");
  }
}

class Dog extends Animal {}

class Cat extends Animal {}

let dog = new Dog("旺财", 5);
let cat = new Cat("咪咪", 3);
dog.bark(); // 打印:旺财在叫
cat.bark(); // 打印:咪咪在叫

通过继承类可以将多个类中共有的代码写在一个父类中,这样只需要写一次即可让所有的子类拥有父类的属性和方法。

二、子类中属性和方法的添加

如果希望在子类中添加一些父类没有的属性和方法,直接在子类中添加即可。

三、子类中方法的重写

如果子类中添加了和父类相同的方法,子类的方法会覆盖掉父类的方法。

这种子类覆盖掉父类的方法的形式,我们称之为重写。

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁5 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄5 天前
JavaScript 隐式全局变量解析
javascript