重写和重载的区别

本文详细阐述了重写(Override)和重载(Overload)的概念,着重介绍了它们在继承和同一类中的应用。重写发生在子类对父类方法的修改,要求参数列表和返回类型相同,访问权限更开放。而重载则在同一类中通过不同的参数列表实现方法的多态性。两者都是多态性的体现,但作用范围和约束条件有所不同,重载不关注返回类型,而重写则对返回类型有一定要求。理解这两者有助于更好地掌握面向对象编程的精髓。
摘要由CSDN通过智能技术生成

重写和重载的区别

重写:

重写是发生在继承中的,子类重写父类的方法;除了方法体,实现方式不同,参数和返回类型必须相同,访问修饰符必须大于父类的权限。

重写的规则:
1.参数列表必须完全和被重写的相同
2.重写的访问修饰符必须大于大于被重写的访问修饰符;
3.重写返回的类型必须和被重写的一致或是兼容。
4.重写时抛出的异常必须是小于被重写抛出的异常,可以一样,也可以是异常的子类;
5.被重写的方法不能为private,如果是私有的则不能被称为重写,而是重新定义了一个方法,与父类无关;
6.静态方法不能重写为非静态方法(编译会出错)
7.如果父类的方法用常量final修饰,不过是何种访问修饰符,都不能重写该方法

重载

重载,发生在同一个类中,除了方法名之外,参数类型和个数不同。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。同一个类中,方法名相同,参数列表不同;

重载的规则:
1.在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样)
2.不能通过访问修饰符、返回类型、抛出的异常进行重载
3.方法的异常类型和数目不会对重载造成影响。

联系与区别

1.这个两个都是实现多态的方式,区别在于,重载是编译时所体现出的多态,另一个是在运行时的多态性。
2.重载是发生在一个类上,重写是在子类继承父类之间。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;
3.重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。
4.重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值