多态的原理是什么

题目来源:https://zhuanlan.zhihu.com/p/86536581
java面试清单
**java基础 **
多态的原理是什么
多态分为重载和重写。
重载是指:在同一个类中,通过控制一个函数参数个数,返回值类型的不同来同一个方法的不同类型,在调用的过程中,会自动选择最合适的函数进行操作。
重载官方:就是在类中可以创建多个方法,它们具有相同的名字,但可具有不同的参数列表、返回值类型。调用方法时通过传递的参数类型来决定具体使用哪个方法,这就是多态性
重写是指:在父子类的继承关系之间,通过在子类中重写父类已经存在的方法,在重写过程中除了中间内容可以变化,函数的返回值类型和参数形式均不可变。在调用过程中会遵循最近原则进行调用
重写官方:是父类与子类之间的多态性,子类可继承父类中的方法,但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。重写的参数列表和返回类型均不可修改
多态原理
在JVM中,如果想要代码的跨平台一致性的话,需要调用java对应的编译器将java文件编译成.class文件。那么只要存在JVM的机器,就可以把.class文件转换字节码文件,使得任何一台机器都可以运行。
在转换过程中,.class文件是有一定的严格的内部结构顺序的。我们所说的方法在通过javap编译以后,会存放在方法表集合中。存储格式为
[access_flag
name_index
descrptor_index
attributes_count
arrtibut_info]
对与重写而言,当在子类中没有进行重写过程,那么在其对应的方法表中根本找不到这一项信息
对于重载而言,除了要与原方法具有简单的签名之外,还要求有一个与原方法不同的特征签名。而这个特征签名是根据方法中各个参数在常量池中的字段符号引用的集合。
同时因为返回值不会包含在特征签名之中,所以java是无法仅仅依靠返回值的不同来对一个方法进行重载的。
但在class文件格式中,特征签名的范围要更大一些,只要描述符不是完全一致的两个方法也能共存。也就是说,如果两个方法有相同的名称和特征签名,但返回值不同也是可以合法共存于一个class文件中的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值