当前位置: 首页 > news >正文

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

相关文章:

7.11 Java方法重写

7.11 Java方法重写 这里首先要确定的是重写跟属性没有关系,重写都是方法的重写,与属性无关 带有关键字Static修饰的方法的重写实例 父类实例 package com.baidu.www.oop.demo05;public class B {public static void test(){System.out.println("这…...

Android Stodio编译JNI项目,Cmake出错:Detecting C compiler ABI info - failed

在使用Android Stodio编译JNI项目时出现Cmake错误,报错如下: Execution failed for task :app:configureCMakeDebug[arm64-v8a]. > [CXX1429] error when building with cmake using C:\Users\Dell\AndroidStudioProjects\MyApplication2\app\src\ma…...

6.2 Spring Boot整合MyBatis

1、基于Spring BootMyBatis的学生信息系统的设计与实现案例 基于Spring BootMyBatis实现学生信息的新增、修改、删除、查询功能,并实现MySQL数据库的操作。 MySQL数据库创建学生表(t_student),有主键、姓名、年龄、性别、出生日…...

在CentOS 7上使用kubeadm部署Kubernetes集群

如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 前言: Kubernetes是一个开源的容器编排平台,用于管理和自动化部署容器化的应用程序。…...

这6个免费设计素材网站,设计师都在用,马住

新手设计师不知道去哪里找素材,那就看看这几个设计师都在用的网站吧,免费、付费、商用素材都有,可根据需求选择,赶紧收藏~ 菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库,站内包含设…...

uni-app引入sortable列表拖拽,兼容App和H5,拖拽排序。

效果: 拖拽排序 背景: 作为一名前端开发人员,在工作中难免会遇到拖拽功能,分享一个github上一个不错的拖拽js库,能满足我们在项目开发中的需要,下面是我在uniapp中使用SortableJS的使用详细流程; vue开发…...

Redis-内存淘汰算法

Redis可以存多少数据 32位的操作系统默认3G 谁现在用32位啊?我们说64位的 一般来讲是不设上限的 但是我们也可以主动配置maxmemory, maxmemory支持各单位: maxmemory 1024 (默认字节) maxmemory 1024KB maxmemory 1024MB maxmemory 1204GB 当Redis存储超过这个配置值&#…...

Git 合并分支时允许合并不相关的历史

git fetch git fetch 是 Git 的一个命令,用于从远程仓库中获取最新的提交和数据,同时更新本地仓库的远程分支指针。 使用 git fetch 命令可以获取远程仓库的最新提交,但并不会自动合并或修改本地分支。它会将远程仓库的提交和引用&#xff…...

世界上最著名的密码学夫妻的历史

Alice和Bob是密码学领域里最著名的虚拟夫妻,自1978年“诞生”以来,到走进二十一世纪的移动互联网时代,作为虚构的故事主角,Alice和Bob不仅在计算机理论、逻辑学、量子计算等与密码学相关的领域中得到应用,他们的名字也…...

二维码网络钓鱼攻击泛滥!美国著名能源企业成主要攻击目标

近日,Cofense发现了一次专门针对美国能源公司的网络钓鱼攻击活动,攻击者利用二维码将恶意电子邮件塞进收件箱并绕过安全系统。 Cofense 方面表示,这是首次发现网络钓鱼行为者如此大规模的使用二维码进行钓鱼攻击,这表明他们可能正…...

前端面试题-CSS

1. 盒模型 ⻚⾯渲染时, dom 元素所采⽤的 布局模型。可通过 box-sizing 进⾏设置。根据计算宽⾼的区域可分为 content-box ( W3C 标准盒模型)border-box ( IE 盒模型)padding-boxmargin-box (浏览器未实现) 2. BFC 块级格式化上下⽂,是⼀个独⽴的渲染…...

6.1 安全漏洞与网络攻击

数据参考:CISP官方 目录 安全漏洞及产生原因信息收集与分析网络攻击实施后门设置与痕迹清除 一、安全漏洞及产生原因 什么是安全漏洞 安全漏洞也称脆弱性,是计算机系统存在的缺陷 漏洞的形式 安全漏洞以不同形式存在漏洞数量逐年递增 漏洞产生的…...

STM32--EXTI外部中断

前文回顾---STM32--GPIO 相关回顾--有关中断系统简介 目录 STM32中断 NVIC EXTI外部中断 AFIO EXTI框图 旋转编码器简介 对射式红外传感器工程 代码: 旋转编码器工程 代码: STM32中断 先说一下基本原理: 1.中断请求发生&#xff1a…...

Python + Selenium 处理浏览器Cookie

工作中遇到这么一个场景:自动化测试登录的时候需要输入动态验证码,由于某些原因,需要从一个已登录的机器上,复制cookie过来,到自动化这边绕过登录。 浏览器的F12里复制出来的cookie内容是文本格式的: uui…...

文件的导入与导出

文章目录 一、需求二、分析1. Excel 表格数据导出2. Excel 表格数据导入一、需求 在我们日常开发中,会有文件的导入导出的需求,如何在 vue 项目中写导入导出功能呢 二、分析 以 Excel 表格数据导出为例 1. Excel 表格数据导出 调用接口将返回的数据进行 Blob 转换,附: 接…...

[C++] string类的介绍与构造的模拟实现,进来看吧,里面有空调

文章目录 1、string类的出现1.1 C语言中的字符串 2、标准库中的string类2.1 string类 3、string类的常见接口说明及模拟实现3.1 string的常见构造3.2 string的构造函数3.3 string的拷贝构造3.4 string的赋值构造 4、完整代码 1、string类的出现 1.1 C语言中的字符串 C语言中&…...

【Apollo】赋能移动性:阿波罗自动驾驶系统的影响

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…...

Camunda 7.x 系列【19】表达式语言

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 变量与函数2.1 流程变量2.2 内置环境变量2.3 Spring、CDI Bean2.4 内置上下文函数…...

详解RFC 793文档-4

3.7 数据通信 一旦连接建立,数据就通过交换数据段进行通信。由于错误(校验和错误)或网络拥塞可能导致数据段丢失,TCP使用重传(超时后)来确保每个段的交付。由于网络或TCP重传,可能会到达重复的段。对于重复段,TCP对段中的SEQ和ACK号执行某些检测,以验证它们的可接受性…...

ubuntu16编译内核源码并替换

文章目录 1.找到和ubuntu内核版本相同的内核源码包2.下载下面三个文件3.相关步骤4.安装编译环境软件参考: 1.找到和ubuntu内核版本相同的内核源码包 4.15.0-112.113 : linux package : Ubuntu (launchpad.net) 2.下载下面三个文件 3.相关步骤 uname -r #查看内核…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

数据链路层的主要功能是什么

数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注&#xff1a;文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件&#xff1a;STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...