Java中父类方法重写有哪些需要注意的?

举报
whisperrr 发表于 2021/08/17 14:22:14 2021/08/17
【摘要】 在继承关系中,子类会自动继承父类 中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。

  在继承关系中,子类会自动继承父类 中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。

  在上一节案例中,Dog类从Animal类继承了shout()方法,该方法在被调用时会打印“动物发出叫声”,这显然不能描述一种动物的具体叫声,Dog类对象属于犬类,发出的叫声应该是“汪汪”。为了解决这个问题,可以在Dog类中重写父类Animal中的shout()方法,如文件1所示。

  // 定义Animal类

  class Animal {

  //定义动物叫的方法

  void shout() {

  System.out.println("动物发出叫声");

  }

  }

  // 定义Dog类继承动物类

  class Dog extends Animal {

  // 定义狗叫的方法

  void shout() {大连无痛人流医院 http://www.bhbyby.net/

       System.out.println("汪汪……");

  }

  }

  // 定义测试类

  public class Example02 {

  public static void main(String[] args) {

  Dog dog = new Dog(); // 创建Dog类的实例对象

  dog.shout(); // 调用Dog类重写的shout()方法

  }

  }

  文件1中,定义了Dog类并且继承自Animal类。在子类Dog中定义了一个shout()方法对父类的方法进行重写。从运行结果可以看出,在调用Dog类对象的shout()方法时,只会调用子类重写的方法,并不会调用父类的shout()方法。

  注意:

  子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。如:父类中的方法访问权限是public,子类重写父类该方法的访问权限就不能是private。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。