7.11 Java方法重写

这篇具有很好参考价值的文章主要介绍了7.11 Java方法重写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

7.11 Java方法重写

这里首先要确定的是重写跟属性没有关系,重写都是方法的重写,与属性无关

  1. 带有关键字Static修饰的方法的重写实例

    父类实例

    package com.baidu.www.oop.demo05;
    
    public class B {
        public static void test(){
            System.out.println("这是父类方法的重写");
        }
    }
    

    子类实例

    package com.baidu.www.oop.demo05;
    
    public class A extends B{
        public static void test(){
            System.out.println("这是子类方法的重写");
        }
    }
    

    主程序实例

    package com.baidu.www.oop;
    
    import com.baidu.www.oop.demo05.A;
    import com.baidu.www.oop.demo05.B;
    
    public class Application {
        public static void main(String[] args) {
            A a = new A();
            a.test();
            //父类的引用指向了子类
            B b = new A();
            b.test();
            /*
            * 这里new的都是A但是输出结果不同
            * a.test()调用的是A类中的静态方法
            * b.test()调用的是B类中的静态方法
            * A类与B类之间又有继承关系
            * 有了继承关系在new A()的时候,子类是可以指向父类的
            * 也就是B b = new A()中父类的引用b可以指向子类
            * 因为类型之间可以转化
            * 在这个实例中我们也能看出,方法的调用只跟等号左边的类有关
            * 也就是定义的数据类型有关
            * 也就是与右边的new A()没有什么关系*/
        }
    }
    /*
    * 这是子类方法的重写
    这是父类方法的重写
    
    Process finished with exit code 0*/
    
  2. 不带Static关键字的方法的重写

    在IDEA中可以使用alt+insert快捷键实现快速插入方法的重写如图

    7.11 Java方法重写,Java学习,java,intellij-idea,开发语言

    选择相应的父类方法可以重写,同时在方法上会自动生成一个注解

    @Override//注解跟注释一样,只不过这是一个又功能的注释
        public void test1() {
            super.test1();//默认调用父类的方法
        }
    }
    

    Override就是重写的意思,生成的重写的方法默认的是调用父类的方法。

    不带Static关键字修饰的父类实例

    package com.baidu.www.oop.demo05;
    
    public class B {
        public static void test(){
            System.out.println("这是父类static修饰的方法的重写");
        }
        public void test1(){
            System.out.println("这是父类没有static修饰的方法的重写");
        }
    
    }
    

    不带Static关键字修饰的子类实例

    package com.baidu.www.oop.demo05;
    
    public class A extends B{
        public static void test(){
            System.out.println("这是子类static修饰的方法的重写");
        }
    
        @Override
        public void test1() {
            System.out.println("这是子类没有static修饰的方法的重写");
        }
    }
    

    不带Static关键字修饰的主程序实例

    package com.baidu.www.oop;
    
    import com.baidu.www.oop.demo05.A;
    import com.baidu.www.oop.demo05.B;
    
    public class Application {
        public static void main(String[] args) {
            A a = new A();
            a.test();
            a.test1();
            //父类的引用指向了子类
            B b = new A();
            b.test();
            b.test1();
            /*
            * 这里new的都是A但是输出结果不同
            * a.test()调用的是A类中的静态方法
            * b.test()调用的是B类中的静态方法
            * A类与B类之间又有继承关系
            * 有了继承关系在new A()的时候,子类是可以指向父类的
            * 也就是B b = new A()中父类的引用b可以指向子类
            * 因为类型之间可以转化
            * 在这个实例中我们也能看出,关键字static修饰的静态方法的调用只跟等号左边的类有关
            * 也就是定义的数据类型有关,就像double i = 1;虽然赋值了整型,但是数值类型还是double
            * 也就是与右边的new A()没有什么关系*/
        }
    }
    /*
    这是子类static修饰的方法的重写
    这是子类没有static修饰的方法的重写
    这是父类static修饰的方法的重写
    这是子类没有static修饰的方法的重写
    
    
    Process finished with exit code 0*/
    

    从运行结果可以看出没有Static关键字修饰的方法的重写,虽然B b= new A();但是用Static关键字修饰的test()方法重写的调用是调用的父类的方法,而没有Static关键字修饰的test1()方法则是调用了子类的方法的重写。这里我们就得出一个结论静态方法与非静态方法是有区别的,没事的时候不要写一些静态的方法去玩,如果是使用了Static修饰的静态方法是与左边的定义类型有关的,而么有Static修饰的非静态方法则是与右侧赋值的方法有关,这也就是子类重写了父类的方法

    这里一定要注意重写只与非静态的方法有关,与静态方法没有关系,因为静态方法在类加载的时候就已经进入内存。而且重写方法的关键词也必须是public修饰的。

    这里我们也看出方法的重写与父类的方法名一模一样,只是实现的代码不同,与重载不同的是

    1. 重载是在同一个类中的,而重写则是在父类与子类之间的
    2. 重载是同一个类中的同一方法名但参数不同,而重写则是在不同类中的同一方法,只不过实现代码也就是方法体不同
    重写:前提:必须要有继承关系,而且是子类重写父类的方法!
    1.方法名必须相同
    2.参数列表必须相同
    3.修饰符:范围可以扩大,但是不能缩小,比如父类如果是一个Private私有类型的,假设可以被继承,那么子类可以写成public的,但是如果父类是public的子类重写时不能变成Private的类型。这里修饰符的优先级public > protected > default > private,也就是范围可以扩大但是不能缩小。
    4.抛出的异常:重写可能会抛出异常,异常的范围可以被缩小,但不能扩大,这与方法重写修饰符刚好相反,也就是子类本身是继承父类的方法,如果抛出异常,只在子类中抛出异常就行,不能再连累父类。
    
  3. 为什么需要重写文章来源地址https://www.toymoban.com/news/detail-652957.html

    1. 生活中我们经常遇到父类的功能子类不一定需要或者不一定满足,父类中方法实现功能太多了,子类只需要少部分即可满足,或者父类太简单了,不能满足子类的,所以就需要子类重写父类的方法。

到了这里,关于7.11 Java方法重写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java方法重写

    目录 1.什么是方法重写 2.方法重写的规则 3.重写与重载的区别 重写 ( override ,也称为 覆盖 ):在子类中对父类中 允许访问的方法 的 实现过程 进行重新编写,子类中 方法的名称、返回值类型、参数列表 与父类相同,只有方法体中的实现不同 1.子类在重写时,方法名、返

    2024年02月14日
    浏览(42)
  • java重写方法

    重写(override):也称覆盖。重写是子类对父类 非静态 , 非private , 非final 方法的实现过程进行重新编写, 返回值(JDK7以后,被重写的方法返回值类型可以不同,但是必须是具有父子关系的)和形参都不能改变。即外壳不变,核心重写。 【方法重写的规则】: 1.子类在重

    2023年04月08日
    浏览(45)
  • 关于Java中方法重载和方法重写

    方法重写是子类继承父类(默认继承Object类)后覆盖父类的方法 需要保证同名 同参 同返回值 且访问权限范围不能缩小(publicprotecteddefaultprivate) 方法重载是同类中可以有多个同名但参数不同的方法 调用方法的时候可根据传参情况执行对应的方法 需要注意参数不同可以指参数数量

    2023年04月20日
    浏览(53)
  • Java中方法的重载与重写

    提示:这里可以添加本文要记录的大概内容: 方法的重载与重写容易混,所以单独拿出来比较 提示:以下是本篇文章正文内容,下面案例可供参考 在同一个类中,允许定义一个以上同名的方法称为方法重载 方法重载的规则: 方法名相同 方法的参数必须不同,参数类型或参

    2024年02月08日
    浏览(46)
  • Intellij-idea 如何编译maven工程*

    在 Intellij IDEA 中编译 Maven 工程的步骤如下: 打开你的 Maven 工程。如果工程已经在 IDEA 中打开,那么你可以直接进行下一步。如果没有,你可以通过 File - Open 在弹出的对话框中选择你的 Maven 工程路径进行打开。 打开 Maven 项目窗口。在 IDEA 的右边会有一个 Maven 项目的窗口,

    2024年02月02日
    浏览(70)
  • Linux 创建 intellij-idea快捷方式

    在 Linux 中,可以通过创建快捷方式的方式方便地打开 IntelliJ IDEA 开发工具。下面是创建 IntelliJ IDEA 快捷方式的详细步骤: 第1步:打开终端窗口 首先,要打开终端窗口。可以通过快捷键 Ctrl + Alt + T 打开终端窗口。也可以在系统菜单栏中选择“应用程序”-“实用工具”-“终端

    2024年02月03日
    浏览(78)
  • Intellij-idea 如何编译maven工程

    在 IntelliJ IDEA 中编译 Maven 工程是一个相对直接的过程。以下是基本步骤: 1. 打开或导入 Maven 项目 如果您已经有一个现有的 Maven 项目,可以直接在 IntelliJ IDEA 中打开它。选择 File Open,然后浏览到您的 Maven 项目文件夹,选择包含 pom.xml 的目录。 如果您是从现有的源代码导入

    2024年01月25日
    浏览(73)
  • Java中方法的重载和重写的区别。

    一、定义上的区别: 1、重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。 2、覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实

    2023年04月08日
    浏览(51)
  • 如何在Intellij-idea如何编译maven工程

    在 IntelliJ IDEA 中编译 Maven 工程,你需要遵循以下步骤: 打开 IntelliJ IDEA :首先,启动 IntelliJ IDEA。 打开 Maven 项目 :在欢迎界面上,选择 \\\"Get from Version Control\\\",然后选择你的 Maven 项目的仓库地址。或者,如果你已经有了项目文件(如  .idea  和  pom.xml ),你可以直接打开这

    2024年01月18日
    浏览(89)
  • JAVA中,继承父类和重写父类方法有什么区别?

    在Java中,继承和重写都是面向对象编程的重要概念,但它们有着完全不同的作用: 继承:继承是对象之间的一种关系,子类(派生类)会继承父类(基类)的属性(成员变量)和方法。这使得你可以使用父类的代码,并添加或改变类的行为,以适应新的需求。继承主要是为

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包