重载和重写的区别及在typescript中的使用
在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中的使用相关推荐
- C++中重载与重写函数区别及虚函数(转载)
C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...
- java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别
目录 重载与重写的概念 重载与重写的区别 重载与重写的总结 构造器是否能被重写override 为什么函数不能根据返回类型来区分重载 重载与重写的概念 重载:同样一个方法可以根据输入参数列表的不同,做 ...
- 开课吧-Java常见面试题:重载和重写的区别?
重载和重写的区别? 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性. 重载发生在一个类中,同名的方法如果有不同的参数列表(类型不同.个数不同.顺序 ...
- C#重载和重写的区别
C#重载和重写的区别 重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同等. 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无 ...
- 继承、多态,重载、重写的区别与总结
什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...
- JAVA中重写和实现的区别_Java中重载和重写的区别
Java中重载和重写的区别 1.1重载是什么 Overloading 方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型 1.2为什么用重载 重载 ...
- 重载和重写的区别有哪些?
重载和重写的区别有以下几点: 一.定义上的区别: 1.重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 2.覆盖(也叫重写)是指在派生类中重 ...
- C#重载与重写的区别
前言:在之前的博文中,我总结过重载与重写的区别与用法,本博文算是一个系统的概述与总结. 文章目录 一.重载与重写的区别 二.重载与重写的特征 三.重载与重写的对比 一.重载与重写的区别 重载必须在同一 ...
- java中重载与重写的区别
最近了解一下重载和重写 一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...
最新文章
- Linux 上不可修改的文件和目录
- mysql show语句_mysql常用show语句
- python 3.x urllib学习
- 默认子进程与父进程属于同一个进程组,所以注意对接受到的信号的处理方式
- C#中的运算符、数组、枚举、结构体
- CloudFoundry环境上的三种端口,您分清楚了吗
- Flask 应用的文件结构
- 关于sprintf和snprintf的比较
- 水平+垂直布局-css (借鉴)
- polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)
- java初始化数据报_java – 如何在Docker中初始化数据库后启动flyway
- Linux命令详解-mkdir
- 使用Connector/C++操作MySQL
- 2021年汽车电子之传感器行业研究报告
- Mac下如何修改IDEA的背景颜色
- 将Word文档转换成PPT教程
- Vue 2.x + Element后台模板开发教程(三)后台首页模板设计
- [TcaplusDB] 行业新闻汇编(6月29日)
- 2017 百度之星 复赛 Valley Numer(数位dp)
- 计算机毕业设计springboot+vue基本微信小程序的校园二手闲置物品交易小程序 uniapp
热门文章
- fabric通过java怎么整合RS纠删码的实现
- ORA-02396:超出最大空闲时间,请重新连接
- [附源码]JAVA+ssm计算机毕业设计餐厅点餐订餐系统(程序+Lw)
- PMI-ACP(Agile Certified Practitioner)敏捷管理专业人士资格认证考试知识点汇总
- M1W Dock 教程之开发环境配置
- dex分包方案概述与multidex包的配置使用
- MySQL快速学习笔记(建议收藏)
- AI测试】人工智能测试整体介绍——第五部分
- 罗克韦尔自动化荣膺“2019全球最具商业道德企业”,这是该公司第11年上榜
- 输入一行字符,分别统计出其中的英文字母大写小写、空格、数字和其它字符的个数。