方法重写

概念

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

  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 @   poiuyjoey  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示