首页 > 编程语言 > 详细

Java方法之重写

时间:2020-12-05 19:47:07      阅读:32      评论:0      收藏:0      [点我收藏+]

在解决实际问题时,我们抽象出父类和子类,定义出父类的方法,但是有时候父类的方法,子类不一定满足,那么这个时候子类就需要重新修改该方法,称为方法的重写。

比如:

我们定义了一个Person类,Person类中有一个方法为say,如下:

  public void say(String mes){
        System.out.println("Person类说了"+mes);
    }

有一个子类Student类,Student类集成了Person类,但Student类的say方法要跟Person不一样,那么这时就需要再Student类中对say方法进行重写。

   public void say(String mes){
      System.out.println("Student类说了"+mes);
    }

 

因此,我们就知道了为什么要重写方法:

  1. 当父类中的方法无法满足子类需求的时候,需要方法重写
  2. 当子类具有特有的功能的时候,就需要方法重写

 

方法重写的规则

  1. 方法重写存在于子类中,且子类必须继承父类,需要有继承关系,子类重写父类的方法。
  2. 子类和父类的方法名、参数列表(参数个数、顺序)必须相同,方法体不同。
  3. 被static、final、private修饰的父类方法 不能被重写。
  4. 构造方法不能被重写。
  5. 子类的修饰符范围可以扩大,但不能缩小,public > protected >default >privat。
  6.  抛出的异常范围可以缩小,但不能扩大,即重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常
  7. 重写的方法可以使用@Override注解来标识。

            技术分享图片

 

 

修饰符的范围

  在Java中的访问修饰符包含四种:默认(不加任何修饰符)、private(私有的)、protected(受保护的)、public(公有的)。
  private:只允许在本类中进行访问
  public:允许在任意位置访问
  protected:允许在当前类、同包子类/非子类、跨包子类调用,跨包非子类不允许。
  默认:允许在当前类、同包子类/非子类调用,跨包子类/非子类不允许调用
技术分享图片

 

 

方法重写 vs 方法重载

方法重载:

  1. 存在于本类中
  2. 方法名一样,参数列表不一样(顺序、个数、类型)
  3. 修饰符、方法返回值类型不受约束

方法重写:

  1. 存在于子类中
  2. 方法名、参数列表一样
  3. 访问修饰符,访问范围需要大于等于父类方法的访问范围



 

 

技术分享图片

 

Java方法之重写

原文:https://www.cnblogs.com/xmboy/p/14090367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!