java中的方法重写

java中的重写

父类代码如下:

package oop.Demo05;

public class B {
   public static void test(){//静态方法
       System.out.println("B=====>");
  }
   public void test2(){//动态方法
       System.out.println("B=====>");
  }
}

 

子类代码如下

 

package oop.Demo05;

public class A extends B{
   public static void test(){//静态方法
       System.out.println("A=====>");
  }


//   public void test2(){//动态方法
//       System.out.println("A=====>");
//   }


   //Override重写的意思
   @Override//有功能的注释
   public void test2() {
       System.out.println("A=====>");
  }
}

 

启动类代码如下:

package oop.Demo05;

public class Application02 {
   public static void main(String[] args) {

       //方法中有static时:静态方法
       //静态方法的调用只和等于号=左边定义的数据有关。
       //只有非静态方法才可以重写、且必须为public公共类方法
       A a = new A();
       a.test();
       B b = new A();//B类可以用A类new出来是因为A类为子类,继承了父类B的所有东西
       b.test();
       //结果为A====》和B====》

       /* 会出现这种情况的原因是:b是A new出来的对象,因此调用了A的方法
        * 因为静态(static)方法是类的方法,而非静态方法(没有static)是对象的方法。
        * 有static时b调用的是B类的方法,因为b是B类定义的;
        * 没有static时b调用的是对象的方法,而此时的对象是A new出来的,所以会调用A的对象
        */

       //方法中没有static时:非静态方法
       A a1 = new A();
       a.test2();
       B b1 = new A();//子类重写了父类的方法
       b1.test2();
       //结果都为A====》

  }
}

 

重写:需要有继承关系,子类去重写父类的方法!

1.方法名必须相同

2.参数列表必须相同

3.修饰符:范围可以扩大:public>protected>Default>private

4.抛出的异常:范围,可以被缩小,但不能扩大;ClassNotFoundException -->》Exception(大于前面那个)

重写,子类的方法和父类必须要一致;{里的方法体不同}

重写的原因:

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

快捷键Alt + Insert 选择override

 
posted @ 2022-10-16 22:11  zhazhawei906  阅读(64)  评论(0)    收藏  举报