Java基础知识学习菜鸟入门第二十九天——Java方法重写的归纳篇(完整版)

mac2026-05-08  2

Java方法的重写归纳篇

方法重写的定义:

对于方法的重写,我们在继承关系中存在方法重写,在子类继承父类之后,不满足父类提供的功能,子类对于父类继承过来的某些方法可以进行重写(覆盖),对于父类的一些行为进行扩展

tip:如果父类是抽象类时,要重写抽象类中的所有抽象方法

问题:父类都知道子类要重写这个方法了,为什么还多此一举的去定义这个方法?

对于普通类中的继承关系发生之后,定义重写方法为了满足多态的前提。对于抽象类中的继承关系发生之后,定义重写方法为了让子类在设计的时候避免子类的随意性。

方法重写的条件:

方法重写的前提: 一定要发生继承关系子类中的方法和父类中的方法同名参数列表要一模一样返回值类型一模一样 是否是重写方法的判定依据: 修饰符:子类>=父类【可见性越大我们称之为修饰符越大(public >protected>默认的>private)】返回值:子类<=父类【如果是基本数据类型要一致,如果是引用类型子类<=父类】参数列表:子类==父类【一模一样】抛出异常:子类<=父类【子类抛出的异常类一定要小于或等于父类抛出异常类】

代码演示:

//以抽象父类举例 //抽象父类 abstract class Animals { String place="房间"; // 父类中的方法被重写时,父类方法修饰符不可以用private abstract void sing(); public void eat() { System.out.println("在吃饭"); } //父类中的方法重写后,子类的参数列表需要和父类一摸一样 public void method(String place) { System.out.println("我在"+place+"看书"); } } //子类 class Dog extends Animals { // 重写了父类中的方法 public void sing() { System.out.println("小狗在汪汪的唱歌"); } public void eat() { System.out.println("我在吃骨头饭"); } public void method(String place) { System.out.println("我在"+place+"看书"); } } //子类 class Cat extends Animals { // 重写了父类中的方法 protected void sing() { System.out.println("小猫在喵喵的唱歌"); } public void eat() { System.out.println("我在吃猫粮"); } public void method(String place) { System.out.println("我在"+place+"看书"); } } //测试类 public class Test1 { public static void main(String[] args) { Dog one = new Dog(); function(one); Cat two = new Cat(); function(two); } // 使用多态的特性,编译看左边,运行看右边 public static void function(Animals a) {// Animals a=new Dog();Animals a=new Cat(); a.sing(); a.eat(); a.method("房间"); } } //执行结果: 小狗在汪汪的唱歌 我在吃骨头饭 我在房间看书 小猫在喵喵的唱歌 我在吃猫粮 我在房间看书

返回值和抛出异常,后续在你写项目的时候会用到,在此,我就不举例说明,知道就可以

最新回复(0)