Java多态与方法绑定

1、多态:Java程序中一个类或多个类中定义多个同名方法,该多个同名方法完成操作不同;

2、多态表现形式

  • 静态多态(编译时多态):通过方法重载实现

  • 动态多态(运行时多态):通过方法重写(覆盖)实现

3、方法重载与方法重写(覆盖)

对于重载方法,Java编译时系统根据传递给方法的参数个数、类型决定调用哪个方法;

对于覆盖方法,Java运行时系统根据实例类型决定调用哪个方法;

4、方法绑定

1)方法绑定:一个方法的调用与方法所在的类(方法主体)关联起来

  • 静态绑定(前期、编译时绑定):在程序执行前方法已经被绑定

  • 动态绑定(后期、运行时绑定):在运行时根据引用对象的类型进行绑定

final,static,private和构造方法是静态绑定,其余都是动态绑定

2)动态绑定过程:

  • 虚拟机提取对象的实际类型的方法表;

  • 虚拟机搜索方法签名;

  • 调用方法;

方法不同,在处理java类中的成员变量(实例变量和类变量)时,并不是采用运行时绑定,而是一般意义上的静态绑定。所以在向上转型时,对象的方法可以找到子类,而对象的属性(成员变量)还是父类的属性(子类对父类成员变量的隐藏)

如果想调用子类的成员变量name,最简单的办法是将该成员变量封装成方法getter形式

4、总结

1)多态是方法的多态,不是属性的多态(多态与属性无关);

2)多态存在要有3个必要条件:继承、方法重写、父类引用指向子类对象;

3)父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值