重载与重写的区别

方法的重写(override)两同两小一大原则:

方法名相同,参数类型相同

子类返回类型小于等于父类方法返回类型,

子类抛出异常小于等于父类方法抛出异常,

子类访问权限大于等于父类方法访问权限

方法的重载(overload)原则:

方法名相同,参数个数或类型必有一个不同

返回值类型可相同,可不同。

访问权限可随意改变。

重写:

1、被覆盖的方法不能是final类型的。因为final修饰的方法是无法覆盖的。

2、被覆盖的方法不能为private。否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

3、被覆盖的方法不能为static。所以如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误。反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。
当父类中的方法被重写了后,除非用super关键字,否则就无法再调用父类中的方法了。

重载:

可以发生在一个类本身亦可以发生在继承类,要求方法名一致,参数列表不同(参数名,参数个数,参数顺序),返回值无要求。

重写和重载的区别

  1. 方法重写要求参数列表必须一样,而重载则要求必须不同。

  2. 方法重写只能用于子类重写父类方法 ,重载不仅可以重载父类的方法还可以重载自身的方法。

  3. 方法重写对方法的访问权限有特殊的要求,而重载则不作要求。

  4. 一个方法只能被子类重写一次,而一个方法能在改类本身或子类重载多次。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值