在TypeScript中

重写(Override)

从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能小于父类的。
TypeScript代码举例

class Animal {public eat() {console.log("这是一个吃的方法")}
}
class Dog extends Animal {public eat() {console.log("这是一个小狗吃的方法")}
}
let dog: Dog = new Dog()
dog.eat()

重写 总结:

  • 发生在父类与子类之间
  • 方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
  • 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>private)

重载(Overload)

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载

TypeScript代码举例

class Demo {// #region 声明public log(): void;public log(arg1: string): void;public log(arg1: number, arg2: string): void;// #endregion// 实现log(arg1?: string | number, arg2?: string) {}
}

面试题:重载(Overload)和重写(Override)的区别?

答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

重载和重写的区别及在typescript中的使用相关推荐

  1. C++中重载与重写函数区别及虚函数(转载)

    C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...

  2. java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别

    目录 重载与重写的概念 重载与重写的区别 重载与重写的总结 构造器是否能被重写override 为什么函数不能根据返回类型来区分重载 重载与重写的概念 重载:同样一个方法可以根据输入参数列表的不同,做 ...

  3. 开课吧-Java常见面试题:重载和重写的区别?

    重载和重写的区别? 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性. 重载发生在一个类中,同名的方法如果有不同的参数列表(类型不同.个数不同.顺序 ...

  4. C#重载和重写的区别

    C#重载和重写的区别  重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同等. 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无 ...

  5. 继承、多态,重载、重写的区别与总结

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  6. JAVA中重写和实现的区别_Java中重载和重写的区别

    Java中重载和重写的区别 1.1重载是什么 Overloading   方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型 1.2为什么用重载 重载 ...

  7. 重载和重写的区别有哪些?

    重载和重写的区别有以下几点: 一.定义上的区别: 1.重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 2.覆盖(也叫重写)是指在派生类中重 ...

  8. C#重载与重写的区别

    前言:在之前的博文中,我总结过重载与重写的区别与用法,本博文算是一个系统的概述与总结. 文章目录 一.重载与重写的区别 二.重载与重写的特征 三.重载与重写的对比 一.重载与重写的区别 重载必须在同一 ...

  9. java中重载与重写的区别

    最近了解一下重载和重写  一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...

最新文章

  1. Linux 上不可修改的文件和目录
  2. mysql show语句_mysql常用show语句
  3. python 3.x urllib学习
  4. 默认子进程与父进程属于同一个进程组,所以注意对接受到的信号的处理方式
  5. C#中的运算符、数组、枚举、结构体
  6. CloudFoundry环境上的三种端口,您分清楚了吗
  7. Flask 应用的文件结构
  8. 关于sprintf和snprintf的比较
  9. 水平+垂直布局-css (借鉴)
  10. polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)
  11. java初始化数据报_java – 如何在Docker中初始化数据库后启动flyway
  12. Linux命令详解-mkdir
  13. 使用Connector/C++操作MySQL
  14. 2021年汽车电子之传感器行业研究报告
  15. Mac下如何修改IDEA的背景颜色
  16. 将Word文档转换成PPT教程
  17. Vue 2.x + Element后台模板开发教程(三)后台首页模板设计
  18. [TcaplusDB] 行业新闻汇编(6月29日)
  19. 2017 百度之星 复赛 Valley Numer(数位dp)
  20. 计算机毕业设计springboot+vue基本微信小程序的校园二手闲置物品交易小程序 uniapp

热门文章

  1. fabric通过java怎么整合RS纠删码的实现
  2. ORA-02396:超出最大空闲时间,请重新连接
  3. [附源码]JAVA+ssm计算机毕业设计餐厅点餐订餐系统(程序+Lw)
  4. PMI-ACP(Agile Certified Practitioner)敏捷管理专业人士资格认证考试知识点汇总
  5. M1W Dock 教程之开发环境配置
  6. dex分包方案概述与multidex包的配置使用
  7. MySQL快速学习笔记(建议收藏)
  8. AI测试】人工智能测试整体介绍——第五部分
  9. 罗克韦尔自动化荣膺“2019全球最具商业道德企业”,这是该公司第11年上榜
  10. 输入一行字符,分别统计出其中的英文字母大写小写、空格、数字和其它字符的个数。