Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TS中的类的继承以及抽象类

TS中的类的继承以及抽象类

作者头像
玖柒的小窝
修改于 2021-11-08 01:34:31
修改于 2021-11-08 01:34:31
1.6K00
代码可运行
举报
文章被收录于专栏:各类技术文章~各类技术文章~
运行总次数:0
代码可运行

前言

上篇文章中,我们介绍了TS中的类和修饰符,这篇我们继续了解TS中的类相关的两个东西,分别是类的继承以及抽象类

类的继承

我们知道js中有继承,最开始js是使用函数来模拟实现类的,一直到ES6出现,才开启了class以及extends 等相关关键字的使用。那为什么会有继承呢? 事实上,继承的好处在于,可以更好的重用代码,以及后期更好的维护代码

TS中的继承ES6中的类的继承极其相识,子类可以通过extends关键字继承一个类 例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person{
  name:string;
  age:number;
  constructor(name,age){
    this.name = name;
    this.age = age;
  }
}
class student extends Person{
  score:number;
  constructor(name,age,score){
    super();
    this.score =  score;
  }
}
复制代码

可以看见,跟ES6一样,子类构造函数必须加上super()执行父类的构造constructor函数

所以,大家常常说,一个子类实例,同时也是父类的实例

继承的格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class A {}
class B extends A {
  constructor() {
    super();
  }
}
复制代码

如上,B继承A,那B被称为父类(超类),A被称为子类(派生类) 子类实例是可以继承父类所有的publicprotected的属性和方法

除了继承,面向对象还有一个特征:多态 js和ts中多态其实很常见,可以理解为多种状态,比如代码在运行时才能决定具体执行哪个函数

抽象类

抽象就是指不具体的,所以抽象类就是指不具体的类。所以抽象类自身没有什么功能,通常作为父类类使用

定义一个抽象类,使用abstract class两关键字定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
abstract class A{
  abstract fn():number;
}
复制代码

抽象类规定了所有继承自它的非抽象子类必须实现它的所规定的功能和相关操作,否则会报错

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class B extends A{
  constructor(){
    super();
  }
  fn():number{
    return 1
  }
}
复制代码

需要注意,抽象类仅仅作为基类,不能new

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let b = new B();//可以
let a = new A();//报错

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java 学习】:抽象类&接口
💢💢在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。
IsLand1314
2024/10/15
1750
【Java 学习】:抽象类&接口
【初学者笔记】🐯年要掌握 Typescript
JavaScript 是弱类型语言, 很多错误只有在运行时才会被发现,而 TypeScript 提供了一套静态检测机制, 可以帮助我们在编译时就发现错误。
一尾流莺
2022/12/10
1.3K0
【初学者笔记】🐯年要掌握 Typescript
Scala 【 8 面向对象编程 - 继承 】
继承就代表,子类可以从父类继承父类的 field 和 method 。子类可以在自己内部放入父类所没有的子类特有的 field 和 method 。
Lokinli
2023/03/09
3950
【JAVA抽象类和接口】
在Java中Object类是所有类的父类。默认它们都继承了Object这个父类,所有类的引用都可以用Object的引用来进行接收。
ImAileen
2024/12/08
1900
【JAVA抽象类和接口】
ArkTS组件继承的高级用法
在HarmonyOS应用开发中,ArkTS作为开发语言,组件的继承是实现代码复用和扩展功能的重要机制。本文将详细介绍ArkTS中组件继承的高级用法,包括继承的概念、如何使用继承、以及继承在实际开发中的应用和最佳实践。
淼学派对
2024/11/04
1470
走近Ts,用了爽,用后一直爽
前言 vue3已经发布了,ts的脚步已经阻拦不住了,还只会es6?别想了,人家都已经在行动了,以下是ts的基本系列教程,ts的基本语法,高级语法等,以及在vue项目中如何应用ts,跟着我赶紧撸起来吧。
winty
2021/01/22
1.2K0
TypeScript学习第五篇 - 静态属性、静态方法、多态、抽象类
在TypeScript里通过 static 关键字来修饰静态属性与静态方法。静态属性与静态方法不需要实例化就可以访问,访问时直接通过类名来调用,静态方法不能访问当前类里的属性,只能访问当前类里的静态属性。
越陌度阡
2020/11/26
3.6K0
抽象类与继承及概念辨析
张哥编程
2024/12/13
630
typescript 多继承_说明类的继承和多态有什么作用
对于传统的 JavaScript 程序我们会使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员使用这些语法就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来的。 从 ECMAScript 2015,也就是 ES6 开始, JavaScript 程序员将能够使用基于类的面向对象的方式。 使用 TypeScript,我们允许开发者现在就使用这些特性,并且编译后的 JavaScript 可以在所有主流浏览器和平台上运行,而不需要等到下个 JavaScript 版本。
全栈程序员站长
2022/09/16
1.3K0
typescript 多继承_说明类的继承和多态有什么作用
TypeScript防脱发级入门——TS中的类
嗨!大家好!我是法医,一只治疗系前端码猿🐒,与代码对话,倾听它们心底的呼声,期待着大家的点赞👍与关注➕。 1. 面向对象的概述 说到类就不得不说面向对象了,这是因为TS为前端面向对象的开发带来了契机,由于JS没有类型系统,如果使用面向对象方式开发会产生大量的接口(不是指TS中的接口,而是指函数或方法),而大量的接口会导致接口调用复杂度增加,这种复杂度必须通过严格的类型检查来避免错误,如果没有严格的类型检查,那么我们在调用过程中全凭记忆力,在写代码的过程中心都是悬着的😩,没有丝毫安全感可言🤷‍♂️。也正是因
程序员法医
2022/08/11
5780
Java抽象类与oop三大特征
在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它 只有声明,而没有具体的实现 。抽象方法的声明格式为:
Java团长
2018/07/23
8200
Java抽象类与oop三大特征
Java 抽象类、接口
(1) 抽象类和抽象方法都必须用 abstract 关键字来修饰。 (2) 抽象类不能被直接实例化,也就是不能用new关键字去产生对象。 (3) 抽象方法只需声明,而不需实现。 (4) 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法后才能被实例化,否则这个子类还是抽象的
Michael阿明
2021/09/06
5440
Java学习笔记之多态&抽象类&接口
    提供程序的扩展性,定义方法的时候,使用父类型作为参数,在使用的时候,使用具体的子类行参与操作
Jetpropelledsnake21
2021/11/30
3370
Java学习笔记之多态&抽象类&接口
继承、super、this、抽象类
继承中方法的覆盖重写_应用场景 继承设计原则:对于已经投入使用的类,尽量不要进行修改。 推荐定义一个新的类,来重复利用其中共性内容,并且添加改动新内容。
全栈程序员站长
2022/06/29
4060
继承、super、this、抽象类
typescript基础一览,助你从入门到放弃!
ts作为一个超级js,这两年是越来越火,我辈中人如何能不馋他,故观其大概后,迫不及待分享给大家,自己加深印象同时,又帮助大家,岂不美哉!本文分为三个部分,基础语法,进阶语法,以及高级语法,主要是讲解常用语法使用,方便以后忘记之处及时查阅!
用户7413032
2020/06/11
8430
typescript基础一览,助你从入门到放弃!
javascript类(class)
class Person {} Person.propName = 'person'
用户7043603
2022/02/26
6250
TypeScript进阶(一)深入理解类和接口
TypeScript 是一种静态类型的 JavaScript 超集,它提供了类和接口的概念,使得我们能够更好地组织和管理代码。在本文中,我们将深入探讨 TypeScript 类和接口的各种特性,包括类的继承、抽象类、静态成员、接口、索引器以及 this 指向约束。
can4hou6joeng4
2023/11/28
4720
《JavaSE-第十章》之抽象类与接口
前言 前面我们已经学了继承,在继承中我们会发现,子类重写了父类的方法,最终使用的子类的方法,而父类中方法的方法体没啥用,那么是否能把它剩略呢?另一个问题就是类不能多继承,子类的功能是不方便的扩展与维护
用户10517932
2023/10/07
3070
《JavaSE-第十章》之抽象类与接口
【12】JAVASE-面向对象-抽象类【从零开始学JAVA】
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。
用户4919348
2024/05/25
770
【12】JAVASE-面向对象-抽象类【从零开始学JAVA】
【愚公系列】2021年12月 Typescript-类的使用(封装,继承,多态)
ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。
愚公搬代码
2022/12/01
5730
相关推荐
【Java 学习】:抽象类&接口
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验