当前位置: 首页 > news >正文

TypeScript基础入门 - 类 - 抽象类

转载

TypeScript基础入门 - 类 - 抽象类

项目实践仓库

https://github.com/durban89/typescript_demo.git
tag: 1.1.4

为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。

npm install -D ts-node

后面自己在练习的时候可以这样使用

npx ts-node 脚本路径

抽象类

抽象类做为其它派生类的基类使用。 它们一般不会直接被实例化。 不同于接口,抽象类可以包含成员的实现细节。 abstract关键字是用于定义抽象类和在抽象类内部定义抽象方法。具体例子如下

abstract class Animal {
    abstract makeSount(): void;    move(): void {
        console.log('我在移动');
    }
}


抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。 抽象方法的语法与接口方法相似。 两者都是定义方法签名但不包含方法体。 然而,抽象方法必须包含 abstract关键字并且可以包含访问修饰符。具体示例如下

abstract class Department {
    constructor(public name: string) {

    }

    printName(): void {
        console.log("部门名称:" + this.name);
    }

    abstract printMeeting(): void; // 必须在派生类中实现   
}

class AccountingDepartment extends Department {
    constructor() {
        super("会计和审计"); // 在派生类中必须调用super()
    }

    printMeeting(): void {
        console.log('会计部每个星期一上午10点开会');
    }

    generateReports(): void {
        console.log('生成会议报告');
    }
}

let department: Department; // 允许创建一个对抽象类型的引用

// department = new Department(); // 不能创建一个抽象类的实例
department = new AccountingDepartment(); //  允许对一个抽象子类进行实例化和赋值
department.printName();
department.printMeeting();
// department.generateReports(); //  此方法不能调用,因为在声明的抽象类中不存在


运行后的结果如下

$ npx ts-node src/classes_6.ts
部门名称:会计和审计
会计部每个星期一上午10点开会

本实例结束实践项目地址

https://github.com/durban89/typescript_demo.git
tag: 1.1.5

 

相关文章:

  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • Redis分布式锁的正解实现方式
  • goLang学习笔记(一)
  • jar解压删除压缩
  • zlog使用手册
  • Dagger2基础篇(一)
  • CreatorPrimer|从zIndex开始
  • (day6) 319. 灯泡开关
  • python其他模块安装
  • jQuery普通绑定事件和on委托事件对比
  • 微信小程序实例:分享给一个人还是分享到群的判断代码
  • 线程与进程的区别(基础面试题)
  • C#将控件置于最顶层和最底层
  • 带有去重以及字符串拼接、日期拼接、字段相除的SQL语句
  • 面试题收集最新
  • [译] 怎样写一个基础的编译器
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • angular2开源库收集
  • C# 免费离线人脸识别 2.0 Demo
  • Hexo+码云+git快速搭建免费的静态Blog
  • NSTimer学习笔记
  • python 装饰器(一)
  • Quartz初级教程
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Vue.js 移动端适配之 vw 解决方案
  • 阿里云前端周刊 - 第 26 期
  • 给Prometheus造假数据的方法
  • 基于游标的分页接口实现
  • 每天10道Java面试题,跟我走,offer有!
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 王永庆:技术创新改变教育未来
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 原生 js 实现移动端 Touch 滑动反弹
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 在weex里面使用chart图表
  • 昨天1024程序员节,我故意写了个死循环~
  • ​secrets --- 生成管理密码的安全随机数​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ###C语言程序设计-----C语言学习(3)#
  • #每天一道面试题# 什么是MySQL的回表查询
  • (java)关于Thread的挂起和恢复
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (七)Java对象在Hibernate持久化层的状态
  • (循环依赖问题)学习spring的第九天
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)LINQ之路
  • .bat批处理出现中文乱码的情况
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET 中的轻量级线程安全
  • .NET框架
  • .Net转前端开发-启航篇,如何定制博客园主题