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

张开发
2026/4/17 21:35:11 15 分钟阅读

分享文章

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子类可以是protected或public但不能是缺省或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调用直接找父类跳过子类重写定义子类中出现和父类方法声明完全一致的方法使用场景父类方法不能满足子类需求时核心要求方法名、参数列表必须一致不能重写private、static、final方法

更多文章