什么是多态?实现多态的机制是什么?
面试官:什么是多态呢?
猪队友:多种形态,气体,液体,固体~
面试官:go out! now!
到底什么是多态呢?
官方说:
- 接口的多种不同的实现方式即为多态。
- 多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术。
我们在程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用在编程的时候并不确定,当处于运行期间才确定。就是这个引用变量究竟指向哪一个实例对象,在编译期间是不确定的,只有运行期才能确定,这样不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。
说人话:
允许将子类类型的指针赋值给父类类型的指针,把不同的子类对象都当作父类来看。比如你家有亲属结婚了,让你们家派个人来参加婚礼,邀请函写的是让你爸来,但是实际上你去了,或者你妹妹去了,这都是可以的,因为你们代表的是你爸,但是在你们去之前他们也不知道谁会去,只知道是你们家的人。可能是你爸爸,可能是你们家的其他人代表你爸参加。这就是多态。
多态的实现机制
原理也很简单,父类或者接口定义的引用变量可以指向子类或者具体实现类的实例对象,由于程序调用方法是在运行期才动态绑定的,那么引用变量所指向的具体实例对象在运行期才确定。所以这个对象的方法是运行期正在内存运行的这个对象的方法而不是引用变量的类型中定义的方法。
什么是多态?实现多态的机制是什么?相关推荐
- 【Java】什么是多态?多态的实现机制是什么?
官方解释: 1.接口的多种不同的实现方式即为多态. 2.多态性是允许你将父类对象设置成为一个或更多的他的子对象相等的技术. 3.我们在程序中定义的引用变量所指向的具体类型和通过改引用变量的方法调用在编 ...
- C++多态:多态实现原理剖析,虚函数表,评价多态,常见问答与实战【C++多态】(55)
虚函数表 一般继承(无虚函数覆写) 一般继承( 有虚函数覆写) 静态代码发生了什么 评价多态 常见问答与实战 问答 为什么虚函数必须是类的成员函数? 为什么类的静态成员函数不能为虚函数? 为什么构造函 ...
- java多态口诀,Java之路---Day12(多态),多态Java
Java之路---Day12(多态),多态Java 2019-10-26-22:40:09 目录: 1.多态的概念 2.多态的分类 3.实现多态的三个必要条件 4.多态的格式 5.多态成员变量的使用特 ...
- 【C++ 语言】面向对象 ( 继承 | 重写 | 子类调用父类方法 | 静态多态 | 动态多态 | 虚函数 | 纯虚函数 )
文章目录 类的继承 方法的重写 子类中调用父类方法 多态 虚函数 虚函数示例 纯虚函数 相关代码 类的继承 1. 继承表示 : C++ 中继承可以使用 ":" 符号 , 格式为 & ...
- php父类继承子类_php有多态吗 多态都有什么好处?理解好多态往往能事半功倍...
一.什么是多态? 多态其实就是根据参数不同而执行不同的方法. 二.php中的多态 多态的概念一般是强类型语言来谈的,因为强类型语言它必须要声明参数类型,比如一个手电筒对象的打开方法其参数申明了只能是蓝 ...
- python多态_多态是什么?为什么要使用多态?
多态 所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态 ,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型". 鸭子类型:虽然我想要一只& ...
- C++_类和对象_C++多态_多态的基本语法_静态多态_动态多态_虚函数---C++语言工作笔记069
然后我们再来看看C++中的多态,这里还要注意一点,就是在C++中是可以用多继承的, 但是java.不行,只能实现多个接口,不能继承多个类.这让c++会更加灵活一点. 可以看到,上面说了,在c++中,分 ...
- 什么是多态?为什么要使用多态?什么时候用多态?多态是如何实现的?使用多态有什么好处?
在学习<大话设计模式>的时候经常会遇到多态,但什么是多态?为什么要使用多态?什么时候用多态?多态是如何实现的?使用多态有什么好处?我们将根据以上五个问题展开激烈的讨论. 什么是多态? ...
- Java复习题1(1.写出抽象类和接口的区别。2.This和Super关键字的区别有哪些?3.常见的类集子类有哪些,各有什么特点?4.什么是多态,多态实现的前提是什么?)
1.写出抽象类和接口的区别. 答: 抽象类中的方法不全是抽象方法,可以在抽象类中声明并实现其他方法. 接口不允许方法的实现,定义的方法无方法体. 抽象类中的成员变量可以使用不同修饰符修饰,如publi ...
- 27.练习:多态:多态实现宠物店领养宠物
27.练习:多态:多态实现宠物店领养宠物 学习:第7遍 1.练习:多态实现宠物店领养宠物 //领养宠物 public class Test{ public static void main(Strin ...
最新文章
- python 工业自动化 人工智能_浅谈人工智能神经网络与工业自动化
- jsp mysql电子档案管理系统_学生档案管理系统的设计与实现(JSP,MySQL)(含录像)
- 可重构计算芯片是未来吗?开发者如何抓住这一机会
- mysql空间计算_MySQL 空间计算 空间查询
- 智慧城市要让市民有获得感
- OTFS学习记录3——MRC接收机
- 重磅!全球云服务商 IP 地址与分析报告:注册与活跃 IP 告诉你到底哪家云更火...
- 《The Django book 2.0中文译本》PDF
- 激光雷达原理及发展现状
- 【保研夏令营经验贴】2021复旦大学计算机科学技术学院
- UE4 记录 UE4 中贴图
- Partial Multi-Label Learning(PML)-文献学习
- Pool:对象池源码解读
- w3c标准语言的是什么,W3C标准及其规范 - Somuns的个人空间 - OSCHINA - 中文开源技术交流社区...
- 【MySQL--03】表的操作
- 幻读与不可重复读区别
- NSGA-3优化算法介绍及案例实现(三个测试函数DTLZ1、DTLZ2和DTLZ3)
- 【图像分割】ExG超绿特征灰度化、二值化分割(Matlab及Python代码实现)
- phpinfo函数的使用
- 3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据