2022.3.15 方法重写

方法重写

方法重写只和非静态方法有关,静态方法在类加载的时候就出来了

方法重写不能是private

方法重写需要有继承关系,子类重写父类的方法(重写方法,不是属性)

  1. 方法名必须相同

  2. 参数列表必须相同

  3. 修饰符:范围可以扩大但是不能缩小(子类可以比父类大),public>Protected>Default>private

  4. 抛出的异常:范围可以缩小,但不能扩大(子类可以比父类小)ClassNotFoundException<Exception

类中方法带static

1  package com.oop.demo07;
2 3  public class B {
4      public static void test() {
5          System.out.println("B=>test()");
6      }
7  }
1  package com.oop.demo07;
2  //重写都是方法的重写,与属性无关
3  public class A extends B{
4 5      public static void test() {
6          System.out.println("A=>test()");
7      }
8  }

 1  2  package com.oop;
 3  4  import com.oop.demo07.A;
 5  import com.oop.demo07.B;
 6  7  public class Application {
 8      public static void main(String[] args) {
 9          //静态方法:方法的调用只和左边定义的数据类型有关
10          //数据类型 数据名 = 值;
11          A a = new A();
12          a.test();//A=>test()
13 14 15          //父类的引用(b)指向子类
16          B b = new A();·
17          b.test();//B=>test()
18      }
19 20  }

类中方法不带static

1  package com.oop.demo07;
2 3  public class B {
4 5      public void test() {
6          System.out.println("B=>test()");
7      }
8  }
1  package com.oop.demo07;
2  //重写都是方法的重写,与属性无关
3  public class A extends B{
4      //Override重写
5      @Override //注解:有功能的注解
6      public void test() {
7          System.out.println("A=>test()");
8      }
9  }
 1  package com.oop;
 2  3  import com.oop.demo07.A;
 4  import com.oop.demo07.B;
 5  6  //一个项目应该只存在一个main()方法
 7  public class Application {
 8      public static void main(String[] args) {
 9          A a = new A();
10          a.test();//A=>test()
11 12 13          //父类的引用(b)指向子类
14          B b = new A();//子类重写了父类的方法 
15          b.test();//A=>test()
16      }
17 18  }

为什么重写

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

posted @ 2022-03-15 00:24  暴躁C语言  阅读(40)  评论(0)    收藏  举报