重写和重载的区别

  1、概念:
​        重载:在一个类中可以一个以上的同名方法,只要他们的参数个数,或参数类型,或参数的顺序不同即可
​        重写:子类继承父类以后,可以对从父类中继承来的同名同参数方法,进行覆盖操作
​   2、具体规则不同
​        重载:
            1、必须有不同的参数列表
​            2、可以有不同的返回值类型,只要参数列表不同就可以了
​            3、可以有不同的访问修饰符
            4、可以抛出不同的异常
        重写:
            1、子类重写的方法名和形参列表与父类中被重写的的方法名和形参列表相同
            2、子类重写的方法的权限修饰符不小于父类被重写方法的权限修饰符(子类不能重写父类中声明为private权限的方法)
            3、子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型
                3.1、父类被重写的返回值类型是void,则子类重写的方法的返回值类型只能是void
                3.1、父类被重写的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类型或者A类的子类
                3.1、父类被重写的返回值类型是基本数据类型,则子类重写的方法的返回值类型也必须是相同的基本数据类型
            4、子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型    
            注意:对于子类和父类中的同名同参数的方法
                    声明为static的,不考虑重写,因为static修饰的方法为静态方法,是属于类的, 不可以被重写。
                    声明为非static的,考虑重写。
​    3、多态性:重载不具备多态性,重写具备多态性
​        对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;
​        而对于多态,只等到方法调用的那一刻,解释运行器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”。 
        引用Bruce Eckel的话:不要犯傻,只要它不是晚绑定,他就不是多态。
    4、类的关系
        重写是子类和父类之间的关系,是垂直关系。
        重载是同一个类中的方法之间的关系,是水平关系。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值