Loading

再来个小记,Java方法重写(Method Overriding)

方法重写概念

方法重写(Overriding) ,也叫做“方法覆盖”,其实我觉得叫“方法覆盖”应该更容易理解一些。
在父类和子类中,都定义了相同的方法(名称相同、参数相同),子类的新方法将覆盖父类中原方法,这一特性称为方法重写(Overriding)。
菜鸟教程上是这么说的:外壳不变,核心重写!

要点说明

  1. 父类和子类 (这就说明要在不同的类中
  2. 方法相同 (方法名称相同,参数也要相同,包括参数数量、参数类型都要相同

举个例子

父类

public class Dog{
    public void bark(){
        System.out.println("汪汪汪");
    }
}

子类

public class Husky extends Dog{
    public void bark(){
        System.out.println("嗷呜嗷呜");
    }
}

测试类

public class OverridingDemo{
    public static void main(String [] args){
        Husky erha = new Husky();
        erha.bark();
    }
}

输出结果

嗷呜嗷呜

解释一下:
首先有个狗狗类Dog,狗狗会叫,所以有个bark()方法。一般小狗都是“汪汪”的叫,所以这边需要输出的是“汪汪”的叫声。
然后我这边来了个哈士奇类Husky,哈士奇也是狗狗,它也继承狗狗类Dog,对应的,哈士奇也会叫,但是哈士奇是怎么叫的?“嗷呜嗷呜”的叫,所以我们这边要重写一下bark()方法,要让它输出“嗷呜嗷呜”的叫声。
最后我new了一只哈士奇出来。这条哈士奇的叫声是什么呢?当然是“嗷呜嗷呜”的叫啦,所以最后也是输出“嗷呜嗷呜”了。

强调几点

  • 父类和子类都必须具有相同的方法名称,相同的返回值类型和相同的参数列表;
  • 声明为 final 和 static 的方法不能被重写;
  • 构造方法不能被重写;
  • 如果不能继承一个类,则不能重写该类的方法;
posted @ 2021-03-10 14:23  菜月昴  阅读(210)  评论(0编辑  收藏  举报