重载和重写的区别

重载和重写是多态性的两种实现方式。重载发生在同一类中,要求方法名相同但参数列表不同;重写发生在子类与父类之间,要求方法名、参数列表和返回类型相同,但子类方法不能放大异常类型,访问权限需更优。两者都是面向对象编程中的关键概念,用于实现不同场景的功能需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重载和重写的区别

重载

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同,参数顺序不同),则视为重载。同时,重载对于返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

重写

子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类的方法,所以在方法名,参数列表,返回类型(除了子类方法的返回值是父类方法返回值的子类时)都相同的情况下,对方法体进行修改或重写。

总结

重写:

  • 发生在子类和父类之间

  • 方法名,参数列表,返回类型(除了子类中方法的返回类型是父类方法返回类型的子类)必须相同

  • 访问修饰符限制一定要大于被重写的访问修饰符(public>protected>default>private)

  • 异常类型只能缩小,不能放大

重载:

  • 发生在同一个类中

  • 方法名必须相同

  • 参数列表不同

  • 方法的返回值类型可以相同也可以不同

面试,重写和重载的区别?

答:方法的重载和重写都是实现多态方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不用,参数个数不同,参数顺序不同),则视为重载;重写发生在子类个父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏替换原则)。重载对返回类型没有特殊要求,不能根据返回类型进行区分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值