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快捷键实现快速插入方法的重写如图

    快捷键

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

    @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修饰的方法的重写");}@Overridepublic 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. 为什么需要重写

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/101045.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

clickhouse(十四、分布式DDL阻塞及同步阻塞问题)

文章目录 一、分布式ddl 阻塞、超时现象验证方法解决方案 二、副本同步阻塞现象验证解决方案 一、分布式ddl 阻塞、超时 现象 在clickhouse 集群的操作中,如果同时执行一些重量级变更语句,往往会引起阻塞。 一般是由于节点堆积过多耗时的ddl。然后抛出…

机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识

机器学习笔记之优化算法——Baillon Haddad Theorem简单认识 引言 Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem简单认识证明过程证明:条件 1 ⇒ 1 \Rightarrow 1⇒ 条件 2 2 2证明:条件 3 ⇒ 3 \Rightarrow 3⇒条件 1…

YOLO目标检测——动漫头像数据集下载分享

动漫头像数据集是用于研究和分析动漫头像相关问题的数据集,它包含了大量的动漫风格的头像图像。动漫头像是指以动漫风格绘制的虚构人物的头像图像,常见于动画、漫画、游戏等媒体。 数据集点击下载:YOLO动漫头像数据集50800图片.rar

mysql之host is blocked问题

程序上线一段时间之后,更新程序总是遇到这个问题 每次都是重启几次程序,或者执行 flush hosts; 毕竟指标不治本,抽出时间决定分析一下问题,查阅了几篇博客。(感谢这几位大佬) https://blog.51cto.com/u_…

SpringCloud学习笔记(二)_Eureka注册中心

一、Eureka简介 Eureka是一项基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client&#xff…

入耳式无线耳机哪个款式好?无线蓝牙耳机音质排行榜

本着要买就认认真真的挑选一台的想法。和有线耳机相比,无线耳机确实有一定优势,比如说它的实用性明显要高不少。那么如何挑选,一款合适自己的耳机呢,首先,还是挑选出当前的热门款式,和各种网红推荐款&#…

Android Studio实现解析HTML获取json,解析json图片URL,将URL存到list,进行瀑布流展示

目录 效果build.gradle(app)添加的依赖(用不上的可以不加)AndroidManifest.xml错误activity_main.xmlitem_image.xmlMainActivityImage适配器ImageModel 接收图片URL 效果 build.gradle(app)添加的依赖&…

网络安全设备篇——加密机

加密机是一种专门用于数据加密和解密的网络安全设备。它通过使用密码学算法对数据进行加密,从而保护数据的机密性和完整性。加密机通常被用于保护敏感数据,如金融信息、个人身份信息等。 加密机的主要功能包括: 数据加密:加密机使…

安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析

如何禁止安装某软件。这里以好课帮app为例做个演示步骤说明。这个博文的目的在于可以阻止他人用手机安装你指定的一些软件。 💔💔💔首先手机上安装好课帮这个软件。打开应用详情找到包名。或者使用第三方工具打开获取这个软件的包名。记住是…

PHP服饰文化网站系统Dreamweaver开发mysql数据库web结构php编程计算机网页项目

一、源码特点 PHP 服饰文化网站系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码下载 https://download.csdn.net/download/qq_41221322/88236778 PHP服饰文化网站…

Python在文件中对字母、单词频度统计

读入给定的文本文件“hamlet.txt”,编写两个函数分别实现: 1) 统计所有字母的出现频度,依据频度从高到低,显示前5个字母及其频度,同时把结果写入文件“hamlet_字母频度.txt”。 2) 统计所有单词的出现频度,依据频度从高到低,显示…

MyBatis的动态语句且如何实现模糊查询及MyBatis的结果映射---详细介绍

前言 前面我们学习了如何使用Mybatis实现简单的增删改查。今天我们来学习如何使用动态语句来根据不同的条件生成不同的SQL语句。这在实际开发中非常有用,因为通常查询条件是多样化的,需要根据实际情况来拼接SQL语句,那什么是MyBatis动态语句呢…

生物识别技术与身份认证:探讨生物识别技术在强化身份认证和访问控制方面的应用

第一章:引言 在数字化时代,随着信息技术的飞速发展,身份认证和访问控制变得越来越重要。传统的用户名和密码方式逐渐暴露出安全性不足的问题,为此,生物识别技术应运而生。生物识别技术利用人体生物特征来识别个体身份…

解决IDEA tomcat控制台只有server日志

解决IDEA tomcat控制台只有server日志 确认tomcatxxx/conf/logging.properties文件是否存在,存在就会有。前提是在run configuration配置了打印多个日志

CSSCI、北核期刊投稿指南(2023年更新)

该数据为经管类的期刊投稿指南,包含发表难度,文章数量,影响因子,用户评价等指标。共5份文件,分别为国内所有期刊信息库、投稿指南(CSSCI版本、CSSCI扩展版本、北大核刊版本、建议期刊版本) 一、…

[.NET/WPF] CommunityToolkit.Mvvm 异步指令

我们在开发中, 经常会有这样的需求: 点击按钮后, 进行一些耗时的工作工作进行时, 按钮不可再次被点击工作进行时, 会显示进度条, 或者 “加载中” 的动画 RelayCommand CommunityToolkit.Mvvm 中的 RelayCommand 除了支持最简单的同步方法, 还支持以 Task 作为返回值的异步方…

一文详解4种聚类算法及可视化(Python)

在这篇文章中,基于20家公司的股票价格时间序列数据。根据股票价格之间的相关性,看一下对这些公司进行聚类的四种不同方式。 苹果(AAPL),亚马逊(AMZN),Facebook(META&…

OPTEE3.17+ubuntu20.04+qemu_v8搭建OPTEE开发环境

参考文章: https://blog.csdn.net/capodexi/article/details/123548850 https://blog.csdn.net/qq_42557044/article/details/130973200 https://blog.csdn.net/zhuwade/article/details/125513873 https://zhuanlan.zhihu.com/p/521196386 https://blog.csdn.net/…

Stable Diffusion的使用以及各种资源

Stable Diffsuion资源目录 SD简述sd安装模型下载关键词,描述语句插件管理controlNet自己训练模型 SD简述 Stable Diffusion是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如…

数据暴涨时代,该如何数据治理?_光点科技

随着信息技术的迅猛发展,数据已经成为现代社会的核心资源。在这个被称为"数据暴涨时代"的时代里,大量的数据源源不断地被产生和积累,但如何有效地管理、分析和利用这些数据成为了一个迫切需要解决的问题。数据治理,作为…