【Java】什么是多态?多态的实现机制是什么?

Java 专栏收录该内容
36 篇文章 0 订阅

官方解释:

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

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

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

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

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

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

编译时多态:比如重载。

运行时多态:比如重写。

多态的实现机制

术语的版本:

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

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

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

简单版本:

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

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值