方法重写

方法重写

  • 重写都是方法的重写,和属性无关
  • 重写只和非静态方法有关,和静态方法无关
  • 重写的关键词只能是public

重写:

  1. 重写需要有继承关系,子类重写父类的方法

  2. 参数列表必须相同

  3. 修饰符:范围只能扩大不能缩小(public <-- protected <-- default <-- private)

  4. 抛出的异常范围可以缩小不能扩大

  5. 子类的方法和父类必须要一致,方法体不同

为什么需要重写

  1. 父类的功能,子类不一定需要或不一定满足

(1)静态方法的调用只和(左边)定义的数据有关

package Demo06;

public class B {
    public static void test(){
        System.out.println("B-->test()");
    }
}
package Demo06;

public class A extends B{
    public static void test(){
        System.out.println("A-->test()");
    }
}

父类的引用可以指向子类

package Demo06;

public class Application {
    public static void main(String[] args) {
        //方法的调用只和(左边)定义的数据有关
      A a = new A();
      a.test();//调用A类的方法

        //父类的引用指向了子类
      B b = new A();
      b.test();//调用B类的方法
    }
}

运行结果

A-->test()
B-->test()

(2)非静态方法的重写

把上面的静态方法改成非静态方法

对A类:Alt + Ins ——>重写方法

请添加图片描述
![请添加图片描述]( https://img-blog.csdnimg.cn/63cc00ab677d40059a89345adef665ac.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzU2NjUwNDk5,size_16,color_FFFFFF,t_70)

然后就会出现这个

请添加图片描述

重写一下里面的方法

package Demo06;

public class A extends B{
    @Override //注解:有功能的注释1
    public void test() {
        System.out.println("A-->test()");
    }
}

B类和main方法不变

![请添加图片描述]( https://img-blog.csdnimg.cn/2bd7c84deff54e38956e4d2030da5588.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzU2NjUwNDk5,size_16,color_FFFFFF,t_70)

运行结果

请添加图片描述

posted @ 2021-07-26 21:28  小芦荟同学  阅读(252)  评论(0)    收藏  举报