news 2026/4/17 21:35:10

Java方法重写完全指南:从概念到规则,一篇搞懂继承中的方法覆盖

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java方法重写完全指南:从概念到规则,一篇搞懂继承中的方法覆盖

子类继承了父类的方法,但如果父类的方法不满足子类的需求怎么办?比如第一代手机只能打电话,第三代智能手机需要视频通话。

这时候就需要“方法重写”——子类把父类的方法重新写一遍,让它更符合自己的需求。

今天这篇文章,把方法重写的概念、规则、注意事项一次讲清楚。

一、书写规则:抽取共性

和成员变量一样,继承中成员方法的书写规则也是把多个子类共有的方法抽取到父类中。子类不需要重复编写,直接继承使用即可。

二、调用规则:就近原则

调用方法时,Java会遵循就近原则:

  • 直接写方法名(等价于this.方法名()):先找子类,子类有就用子类的;子类没有,才去父类找。

  • super.方法名()直接去父类找,跳过子类。

class Fu { public void method() { System.out.println("父类方法"); } } class Zi extends Fu { public void method() { System.out.println("子类方法"); } public void show() { method(); // 子类方法(就近原则) this.method(); // 子类方法(从本类开始找) super.method(); // 父类方法(跳过子类) } }

三、方法重写是什么?

方法重写:在继承体系中,子类中出现了一个和父类方法声明完全一致的方法,就叫方法重写。

方法声明包括:修饰符、返回值类型、方法名、参数列表。这四个必须和父类一模一样。

建议在重写的方法上加上@Override注解。它的作用是让编译器帮你检查:如果重写语法不对,直接报错。

四、什么时候需要重写?

当父类的方法不能满足子类的需求时,就需要重写。

比如手机的例子:

  • 第一代手机(父类):只有打电话(普通语音)

  • 第三代智能手机(子类):需要打电话(视频通话)

父类的call()方法只能语音通话,不能满足子类的需求,子类就需要重写这个方法,把语音通话升级成视频通话。

五、重写的核心规则

1. 方法名和参数列表必须完全一致

不一致直接编译报错。这是最基础的规则。

2. 访问权限:子类必须大于等于父类

权限修饰符范围:private < 缺省(不写) < protected < public

比如父类方法是protected,子类可以是protectedpublic,但不能是缺省private

3. 返回值类型:子类必须小于等于父类

这个规则在日常开发中很少用到,了解即可。实际开发中建议保持和父类完全一致。

4. 哪些方法不能被重写?

  • private私有方法(子类根本看不到)

  • static静态方法(属于类,不属于对象)

  • final最终方法(被final修饰的方法不能重写)

另外,被final修饰的类是最终类,不能被继承,里面的所有方法自然也不能被重写。

六、开发建议

实际开发中,重写方法时建议把方法声明和父类保持完全一致,不要去改权限和返回值类型。这样最安全,也最不容易出错。

方法体按照子类的实际需求编写即可。如果重写的方法里还需要用到父类的原方法,可以用super.方法名()调用。

七、完整示例

// 父类:第一代手机 class Phone { public void call() { System.out.println("语音通话"); } } // 子类:智能手机 class SmartPhone extends Phone { @Override public void call() { // 重写:先保留父类的功能,再扩展 super.call(); // 先语音通话 System.out.println("视频通话"); // 再视频通话 } }

八、知识点总结

场景规则
书写规则抽取子类共性方法到父类
调用规则就近原则:子类优先,子类没有才找父类
this调用先找子类,再找父类
super调用直接找父类,跳过子类
重写定义子类中出现和父类方法声明完全一致的方法
使用场景父类方法不能满足子类需求时
核心要求方法名、参数列表必须一致
不能重写privatestaticfinal方法
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 21:34:16

企业级 AI Coding 设计规范

以上是一套完整的企业级 AI Coding 设计思路规范&#xff0c;点击每个阶段可展开详细内容。以下是各阶段的核心思路概括&#xff1a; 整体哲学&#xff1a;人机协作&#xff0c;人主机辅。 AI 负责提效&#xff0c;人负责 ownership。 8 个阶段的核心要点&#xff1a;需求建立 …

作者头像 李华
网站建设 2026/4/17 21:32:20

告别终端启动:为Ubuntu上的Pycharm创建桌面快捷方式并管理虚拟环境

高效开发者的UbuntuPycharm终极配置指南 每次打开终端输入命令启动Pycharm的日子该结束了。作为专业Python开发者&#xff0c;我们值得拥有更流畅的工作体验。本文将带你从零开始&#xff0c;在Ubuntu系统上打造一套完整的Pycharm高效工作环境&#xff0c;涵盖桌面快捷方式创建…

作者头像 李华
网站建设 2026/4/17 21:30:09

KISS FFT实战指南:轻量级信号处理库的工程化应用

KISS FFT实战指南&#xff1a;轻量级信号处理库的工程化应用 【免费下载链接】old-kissfft [DEPRECATED MIRROR] You want https://github.com/mborgerding/kissfft! 项目地址: https://gitcode.com/gh_mirrors/ol/old-kissfft KISS FFT&#xff08;Keep It Simple, Stu…

作者头像 李华
网站建设 2026/4/17 21:29:03

阿里“快乐生蚝”炸场!一句话让AI给你造个世界

一句话生成一个世界&#xff0c;还能走进去溜达&#xff1f;阿里这个新模型&#xff0c;玩得有点大。4月16日&#xff0c;阿里ATH创新事业部发布了一款可实时构建和交互的开放式世界模型产——HappyOyster。并宣布从即日起&#xff0c;正式开始内测&#xff0c;体验地址&#x…

作者头像 李华
网站建设 2026/4/17 21:27:59

PostgreSQL百分位数实战:从基础函数到高效分布分析

1. PostgreSQL百分位数基础&#xff1a;理解核心函数 在数据分析工作中&#xff0c;百分位数是描述数据分布的重要指标。PostgreSQL提供了两个专门用于计算百分位数的函数&#xff1a;percentile_cont和percentile_disc。这两个函数看起来相似&#xff0c;但在实际应用中有着关…

作者头像 李华