官方解释:

1.接口的多种不同的实现方式即为多态。

2.多态性是允许你将父类对象设置成为一个或更多的他的子对象相等的技术。

3.我们在程序中定义的引用变量所指向的具体类型和通过改引用变量的方法调用在编程的时候并不确定,相当于运行期间才确定。就是这个引用变量究竟指向那个一个实例化对象,在编译期间是不确定的,只有运行期间才确定。这样不用修改源码就可以把变量绑定到不同的实例类上,让程序拥有了多个运行状态,这就是多态。

what!!!这是啥,不懂。解释一下

意思就是:允许将子类类型的指针赋值给父类的指针赋值给父类类型的指针,把不同的子类对象都当作父类来看。比如你家亲戚结婚了,让你家派一个人去参加婚礼,邀请函写的是你爸的名字,但实际上是你去了,或者你的妹妹,这都可以,因为你们代表你爸,但是在你们去之前他们也不知道谁回去,只知道你们家有人去,可能是你们 的每一个成员其中的一个。这就是多态。

多态又分为 编译时多态和运行时多态。

编译时多态:比如重载。

运行时多态:比如重写。

多态的实现机制

术语的版本:

我们将引入java的静态分派和动态分派这个概念。

静态分派:所有依赖静态类型来定位方法执行版本的分派动作。动态分派发生在编译阶段,因此确定静态分派的动作实际上不是由虚拟机来执行的,而是由编译器来完成的。(编译时多态)

动态分派:在运行期根据实际类型确定方法执行版本的分派动作。(运行时多态)

简单版本:

父类或者接口定义的引用变量可以指向子类或者具体实现类的实例化对象,由于程序调用方法是在运行期才动态绑定的,那么引用变量所指向的具体实例化对象运行期才确定。所以这个对象的方法是运行期正在运行的这个对象的方法而不是变量的类型中定义的方法。

【Java】什么是多态?多态的实现机制是什么?相关推荐

  1. Java提高篇 —— Java三大特性之多态

    一.前言 面向对象编程有三大特性:封装.继承.多态. 封装:隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问 ...

  2. java多态ppt_轻松学Java之继承与多态PPT课件.pptx

    轻松学Java之继承与多态PPT课件.pptx 第8章 继承与多态,在前面我们已经了解了类的基本使用方法.对于面向对象的程序而言,它的精华在于类的继承可以以既有的类为基础,进而派生出新的类.通过这种方 ...

  3. java基础提高篇--java的三大特性--多态

    前两篇博文,分别介绍了java的面向对象的两大特性封装和继承,这一篇为介绍一下多态. 首先回顾一下什么是封装.继承. 封装就是隐藏信息,使用抽象的数据类型将数据以及基于数据的操作封装起来,使得外界不能 ...

  4. Java面向对象特征之三 多态

    文章目录 Java面向对象特征之三 多态 1.多态的定义 2.多态的分类 静多态 动多态 3.向上造型 向上造型的好处 4.多态实例演示 5.多态的实现原理 6.多态的深入理解 6.1 静多态(静态绑 ...

  5. java如果不使用多态_深入理解java多态没有烤山药的存在,java就不香了吗?

    @ 我不想知道各位理解java多态没有烤山药的存在,java香不香的问题了,我不要你们认为,我只要我觉得 (感觉要被打....) 在博主认为多态绝对是面向对象的第三大特性中让很多小白同学以及初学者难以 ...

  6. java多态口诀,Java之路---Day12(多态),多态Java

    Java之路---Day12(多态),多态Java 2019-10-26-22:40:09 目录: 1.多态的概念 2.多态的分类 3.实现多态的三个必要条件 4.多态的格式 5.多态成员变量的使用特 ...

  7. java的知识点13——多态、对象的转型(casting)、final关键字、抽象方法和抽象类、接口的作用、如何定义和使用接口?、接口的多继承、面向接口编程

    多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1. 多态是方法的多态,不是属性的多态(多态与属性无关). 2. 多态的存在 ...

  8. Java面试知识点:多态、内部类

    问题:Java面试知识点:多态.内部类 答案:  多态中成员访问特点 • 构造方法:同继承一样,子类会通过super访问父类构造方法 • 成员变量:编译看左边(父类),执行看左边(父类) • 成员方 ...

  9. 12.0_[Java 多态]-多态/子类父类互转/基本引用类型互转/ instanceof 运算符

    ################################################## 目录 多态 什么是多态 为什么使用多态 向上转换/子类到父类的转换 使用父类作为方法形参实现多态 ...

  10. Java的封装继承多态简介与实例

    封装 所谓封装就是访问权限控制,不允许调用者直接访问类的属性,使用private修饰,将属性藏起来 此时若创建对象,直接修改属性值,则会报错 想要对属性进行读写则需要在类中添加get/set方法 此时 ...

最新文章

  1. 【区块链Go语言实现】区块链基本原型
  2. Windows bat with adb
  3. MSSQL SERVER 2005 数学函数
  4. SPOJ3931(N个点形成三角形的最大面积)
  5. SQL注入-SQLMAP基础使用(十二)
  6. 【专升本计算机】甘肃省普通高等学校专升本考试计算机全真模拟试卷(一)
  7. 2020蓝桥杯省赛---java---B---7(分类计数)
  8. 自适应滤波实例之系统辨识
  9. 面向对象的静态、抽象和加载
  10. 连载三:Oracle升级文档大全
  11. 中国喷漆室保护膜市场趋势报告、技术动态创新及市场预测
  12. 如何从Swift调用Objective-C代码?
  13. AcrelCloud-6800智慧消防管理云平台在某中学的应用
  14. win10桌面背景为什么突然变黑了 win10桌面背景不显示解决方法
  15. 杰理之录音详细流程框图【篇】
  16. [程序人生]--深度思考比勤奋更重要
  17. import clip时Cannot re-initialize CUDA in forked subprocess
  18. DFS实现传教士野人渡河问题
  19. ngx.var与ngx.ctx的区别
  20. 2019/4/2更新 重制3617-6.17 增加918+6.21 二合一引导启动系统盘

热门文章

  1. opencv 2d直方图
  2. flask-前端-requests之response对应关系 text
  3. vSphere 7 With K8s系列06:创建命名空间
  4. 敏捷开发系列学习总结(7)——敏捷开发的10大指导原则
  5. linux根目录被mv,【Linux】mv根目录的恢复(转)
  6. mamp安装php扩展,向MAMP添加GMP PHP扩展
  7. Day08- team、iptables、firewall
  8. Cisco策略路由(policy route)精解
  9. Eclipse自动生成作者、日期注释功能设置
  10. CeBIT 2017热点:从5G到AI和物联网