Java - 重写

一、什么是重写

  在子类中创建了一个与父类中名称相同、返回值类型相同、参数列表的方法相同,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖、方法复写。

二、为什么需要重写

  原有的方法无法满足新的需求,需要对这个方法进行改良来满足新的需求。重写是出现在子类继承父类方法中。可以看出,重写就是子类继承的父类方法无法满足子类的新的功能需求,子类对父类的这个方法进行改良重写的一种方式。子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。

三、重写的条件/规则

  1.  重写只跟非静态方法(成员方法)有关,而与静态方法无关:

静态方法和非静态方法是不一样的:在静态方法中,方法的调用只和左边声明的对象类型有关,而与右边无关,是哪个类型

  • 父类的成员方法只能被它的子类重写。
  • 声明为 static 的方法不能被重写,但是能够再次声明。

  2. 方法名必须相同;

    返回的类型必须与被重写的方法的返回类型相同

    参数列表必须相同;

    修饰符:范围可以扩大但不能缩小:public>Protected>Default;

    抛出的异常:范围,可以被缩小,但不能扩大;

       子类的方法和父类必要一致;方法体不同!;

就调用对应的方法。

四、重写的注意事项

  1. 重写的方法可以使用 @Override 注解来标识。
  2. 构造方法不能被重写。
  3. 声明为 final 的方法不能被重写。
  4. 子类和父类在同一个包中时,子类可以重写父类除了声明为 private 和 final 方法的其他方法。
  5. 子类和父类不在同一个包中时,子类只能重写父类的声明为 public 和 protected 的非 final 方法。
  6. 如果不能继承一个方法,则不能重写这个方法。重写是在继承的基础上,如果方法无法被继承那么就无法重写
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值