【java学习—七】方法的重写(31)

news2025/7/15 20:35:08

文章目录

  • 1. 相关概念
  • 2. 代码中理解
  • 4. 子类访问父类的修饰符权限说明


1. 相关概念

  1. 定义:
    在子类中可以根据需要对从父类中继承来的方法进行改造,也称方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
  2. 要求:
    (1)重写方法必须和被重写方法具有相同方法名称参数列表返回值类型
    (2)重写方法不能使用比被重写方法更严格的访问权限。(如果父类方法的修饰符时public,那么子类方法的修饰符只能是public了)

注意:如果现在父类的一个方法定义成 private 访问权限,在子类中将此方法声明为 default 访问权限,那么这样还叫重写吗? :不叫重写,因为子类不能访问父类的私有东西

    (3)重写和被重写的方法须同时为 static 的,或同时为非 static 的
    (4)子类方法抛出的异常不能大于父类被重写方法的异常

2. 代码中理解

创建一个父类Person,创建一个子类Student,在子类中重写父类的方法与不重写父类的方法及进行比较

父类Person代码:

package day07;

public class Person {
	int age;
	 String name;
	 int sex;
	 
	 public void showInfo() {
		 System.out.println(this.age);
		 System.out.println(this.name);
		 System.out.println(this.sex);
	 }
	 
	 public void setInfo(int age, String name, int sex) {
		 this.age = age;
		 this.name = name;
		 this.sex = sex;
	 }

}

子类Student代码:
情况一:不重写父类代码的showInfo方法

package day07;

public class Student extends Person {
	String school;

//	@Override
//	public void showInfo() {
//		System.out.println("以下是student类对Person类的showInfo方法的重写");
//		System.out.println(this.age);
//		System.out.println(this.name);
//		System.out.println(this.sex);
//		
//	}
	
	public static void main(String[] args) { //主函数
		Student stu = new Student();   //创建本类中的对象Student
		stu.showInfo();      // 本类中没有showInfo方法,而父类有该方法,故调用父类方法
		}

}

运行结果:
在这里插入图片描述

情况二:重写父类代码的showInfo方法

package day07;

public class Student extends Person {
	String school;

	@Override
	public void showInfo() {
		System.out.println("以下是student类对Person类的showInfo方法的重写");
		System.out.println(this.age);
		System.out.println(this.name);
		System.out.println(this.sex);	
	}
	
	public static void main(String[] args) {
		Student stu = new Student();
		stu.showInfo();
		
		}

}

运行结果:
在这里插入图片描述

4. 子类访问父类的修饰符权限说明

在这里插入图片描述
(1)如果子类和父类在同一个包下,那么对于父类的成员修饰符只要不是private,那就可以使用

在这里插入图片描述
(2)如果子类和父类不在同一个包下,那么子类只能使用父类中的protected和public修饰的成员

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习笔记 - 车道检测的几种深度学习方法

一、简述 人们在打造自动驾驶汽车时首先想到的就是实现车道检测。这是 Tesla 和 mobileye 所说的“强制性”任务,也是 Sebastian Thrun(自动驾驶汽车教父)在接受采访时所说的首要任务。 这个方向有很多传统的 OpenCV 算法,这些算法由不再使用的非常旧的函数组成。目前全部都…

protobuf 插件(option)使用

protobuf的option使用 一、需求 来源于工作中的一个需求:在传递message时需要对message中不同的字段进行不同的处理,而处理方式通过注释标注在了每个字段的定义后。 类似于有下面这样一个消息: 其中字段1是始终需要的,字段2和3…

计算机网络:静态路由的应用场景及配置

章节:静态路由(部分内容参考:《华为HCIA-Datacom认证学习指南》) 《华为 HCIA-Datacom认证学习指南》 目录 一、静态路由应用场景 二、静态路由配置 2.1 实验目的 2.2 实验拓扑 2.3 实验步骤 1.配置网络连通性 2.测试网络…

双节前把我的网站重构了一遍

赶在中秋国庆假期前,终于将我的网站(https://spacexcode.com/[1])结构定好了,如之前所说,这个网站的定位就是作为自己的前端知识沉淀。内容大致从:前端涉及的基础知识分类汇总(知识库&#xff0…

kafka 相关概念

1 kafka 生产者 kafka 用push的方式把消息推送到topic 每个topic下可以有多个分区, 可以用hash 也可以用轮询的方式指定分区 每个分区内部是可以保证顺序的,但是整体无法保证顺序,除非设置成一个topic只有一个分区。 kafka这种多分区的设置 带…

Elasticsearch 8.11 中的合并更少,摄取更快

作者:ADRIEN GRAND Elasticsearch 8.11 改进了管理索引缓存的方式,从而减少了段合并。 我们对 Elasticsearch 8.11 从索引缓存回收内存的方式进行了重大更改,这有助于减少合并开销,从而加快索引速度。 使用我们的日志跟踪&#x…

嵌入式学习笔记(56)LCD的接口技术

12.2.1从电平角度讲本质上都是TTL信号 (1)什么是TTL接口。5V表示逻辑1,0V表示逻辑0。这种就叫TTL电平,和CMOS电平相对比。 (2)SoC的LCD控制器硬件接口是TTL电平的,LCD这边硬件接口也是TTL电平的。所以他们俩本来是可以直接对接的&#xff0…

我测试用的mark down教程

Markdown 教程 欢迎使用 Markdown 你好,Markdown是一种类似 Word 的排版工具,你需要仔细阅读这篇文章,了解一下 Markdown 基础知识。 Markdown 功能和列表演示 Markdown 有以下功能,帮助你用它写博客: 数学公式代码高亮导航功能等等Markdown 的优点: 间接高效大厂支持…

供应链 | MSOM论文解读:零售商响应定价能力对供应链韧性的影响

​ 论文解读:温梓曦,肖善,杨子豪,张怡雯 A Responsive-Pricing Retailer Sourcing from Competing Suppliers Facing Disruptions 原文作者信息: Xi Shan, Tao Li, Suresh P. Sethi (2021) A Responsive-Pricing Ret…

邮箱发送验证码(nodemailer)

邮箱发送验证码(nodemailer) 前言:后端实现1、前期准备2、安装nodemailer3、代码实现4、效果图 前言: 想要实现向邮箱发送验证码功能,先来简单地梳理一下思路: 前端用正则表达式简单验证下邮箱格式的正确性…

springboot+vue+java付费自习室选座系统nl1u1

本系统从用户的角度出发,结合当前的环境而开发的,在开发语言上是使用的Java语言,在框架上我们是使用的springboot框架,数据库方面使用的是MySQL数据库,开发工具为IDEA。 付费自习室管理系统根据实际情况分为前后台两部…

ROS键盘遥控机器人,通过参数服务器指定速度

1、引言 在上节的驱动机器人,我们知道是cmd_vel话题发布一串Twist类型消息来控制,我们可以输入如下命令查看这个Twist的详细信息:rosmsg show geometry_msgs/Twist geometry_msgs/Vector3 linear float64 x float64 y float64 z geome…

Linux 编写一个 简单进度条

进度条 回车换行理解: 我们要理解,回车换行是两个概念: 换行是把光标移到下一行,是竖直的往下平移;" \n "回车是把光标移到当前行的最开始; " \r " 就和一起打字…

[计算机提升] Windows系统权限

1.2 Windows系统权限 在Windows操作系统中,权限是指授予用户或用户组对系统资源进行操作的权利。权限控制是操作系统中重要的安全机制,通过权限控制可以限制用户对系统资源的访问和操作,从而保护系统安全。 Windows操作系统中包含以下几种权…

FPGA设计时序约束五、设置时钟不分析路径

一、背景 在进行时序分析时,工具默认对所有的时序路径进行分析,在实际的设计中,存在一些路径不属于逻辑功能的,或者不需要进行时序分析的路径,使用set_false_path对该路径进行约束,时序分析时工具将会直接忽…

通过onnxruntime进行模型部署过程中的问题

1.onnxruntime包 从https://github.com/microsoft/onnxruntime/releases/下载解压到D:/code/package/onnruntime 2opencv_c下载https://github.com/opencv/opencv/releases/tag/4.8.1 3.测试opencv代码:总结:添加include目录,添加lib库目录…

网工配置命令总结(1)---Web访问及vlan配置

目录 1.Telnet远程登录设备 2.用户通过Web网管登录设备 3.端口隔离功能的实现 4.配置vlan聚合 5.部分vlan间互通&#xff0c;部分vlan间隔离&#xff0c;vlan内用户隔离 6.限制内网网段互访 1.Telnet远程登录设备 1.使能服务器功能 <HUAWEI> system-view [HUAWEI] …

Eslint配置 Must use import to load ES Module(已解决)

最近在配置前端项目时&#xff0c;eslint经常会碰到各种报错&#xff08;灰常头疼~&#xff09; Syntax Error Error No ESLint configuration found.Syntax Error: Error: D:\dmq\dmq-ui.eslintrc.js: Environment key “es2021” is unknown at Array.forEach ()error in ./…

GO 语言处理并发的时候我们是选择sync还是channel

以前写 C 的时候&#xff0c;我们一般是都通过共享内存来通信&#xff0c;对于并发去操作某一块数据时&#xff0c;为了保证数据安全&#xff0c;控制线程间同步&#xff0c;我们们会去使用互斥锁&#xff0c;加锁解锁来进行处理 然而 GO 语言中建议的时候通过通信来共享内存&…

看图学习数据中心机柜导轨方面的英文术语

对于一些数据中心的服务器&#xff0c;存储&#xff0c;交换机等设备的上架安装&#xff0c;有些导轨设计还是有点复杂的&#xff0c;如果安装手册还是英文的&#xff0c;就更有些挑战了。本文用一个实际的导轨图片来对其中常用的一些英文术语做了一个详细解释&#xff0c;供朋…