java中的多态与重载的区别

多态
  • 回顾概念:子类Child继承父类Father,我们可以编写一个指向子类的父类类型引用,该引用既可以处理父类Father对象,也可以处理子类Child对象,当相同的消息发送给子类或者父类对象时,该对象就会根据自己所属的引用而执行不同的行为
  • 实现形式 :继承和接口
  • 条件 :
    • 要有继承
    • 要有重写
    • 父类引用指向子类对象(直接把一个子类对象赋给一个父类引用变量,也称为向上转型
  • 引用变量的强制类型转换

    • 类型不可转换时强制类型转换会出现ClassCastException异常
    • instanceof运算符(使用它可避免出现上述异常)
      • 用于判断引用类型变量可否强制类型转换成子类或实现类实例
      • xxx(引用类型变量) instanceof xxxxx(子类或其实现类)
      • 返回值为布尔值,true 或false
  • 子类重写了父类的方法时,实际new的是哪个子类,就调用该子类重写的方法,而子类中重载的方法不会被调用

方法的重载
  • 回顾概念:一个类中定义的不同方法名字相同,参数不同。调用时会根据不同的参数表选择不同的方法。

两者区别
  • 方法重载 在方法调用之前,编译器就已经确定了所要调用的方法,也就是“静态绑定”;而对于多态,只有等到方法调用的那一刻
    ,编译器才会确定所要调用的具体方法,也就是“动态绑定”

多态机制遵循的原则(摘自网上)
  • 概括为:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法,但是它仍然要根据继承链中方法调用的优先级来确认方法,该优先级为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值