方法重写

概念

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

  1. 方法名必须相同

  2. 参数列表必须相同

  3. 修饰符:范围可以扩大但不能缩小:public>Protected>Default>private

  4. 抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)

重写:子类的方法和父类必要一致:方法体不同!

为什么需要重写:父类的功能,子类不一定需要,或者不一定满足!

注意点

两边方法类型必须一样,否则会失败

举例

将A类和B类中的public改成private

 

发现override报红了,小图标也没了

 

A类和B类的方法是带有static的

 

结果运行的方法不同(可使用debug查看)

 

A类和B类的方法只带有public

 

运行的方法是相同的(可使用debug查看)

 

快捷键

alt+insert,点击Override Method

 

可以选择要重写的方法

 

代码

//Java-零基础学习/src/oop/demo05/A
package oop.demo05;

//继承
public class A extends B {

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

/*
//静态的方法和非静态的方法区别很大!
   //静态方法:方法的调用只和左边,定义的数据类型有关
   public static void main(String[] args) {

       //方法的调用只和左边,定义的数据类型有关
       A a = new A();
       a.test(); //A

       //父类的引用指向了子类
       B b = new A();//子类重写了父类的方法
       b.test();//B
   }
*/
//Java-零基础学习/src/oop/demo05/B
package oop.demo05;

//重写都是方法的重写,和属性无关
public class B {

   public void test() {
       System.out.println("B=>test()");
  }

}
//Java-零基础学习/src/oop/Application
package oop;

import oop.demo05.A;
import oop.demo05.B;

//一个项目应该只存在一个main方法
public class Application {

   //静态的方法和非静态的方法区别很大!
   //静态方法:方法的调用只和左边,定义的数据类型有关
   public static void main(String[] args) {

       //方法的调用只和左边,定义的数据类型有关
       A a = new A();
       a.test(); //A

       //父类的引用指向了子类
       B b = new A();//子类重写了父类的方法
       b.test();//B
  }
}
 
posted @ 2024-01-13 22:26  poiuyjoey  阅读(35)  评论(0)    收藏  举报