Java中的继承及相关概念
在 Java 中,继承是一种允许一个类继承另一个类的特性。通过继承,子类可以获取父类的属性和方法,这有助于减少代码冗余并提高代码的可维护性。以下是关于文件内容的相关分析和知识点总结:
一、继承的核心概念
1.继承的语法
-
Java 中的继承通过
extends关键字实现,基本语法如下:
class ParentClass {// 父类代码
}class ChildClass extends ParentClass {// 子类代码
}
-
子类会自动继承父类的非私有属性和方法
2.方法的继承,重载与重写
-
在继承中,子类可以继承父类中的方法和属性。例如,在
BBB.java中,BBB类继承了AAA类的testA方法(通过super.testA()调用) 文件内容在下方 -
子类也可以重写父类的方法。在
BBB.java中,BBB类重写了父类的testA方法,使其具有不同的实现 -
一个类下面可以有重名的方法,只要传参不一样就可以,也就是传参的类型或者数量不相同就可以在里面执行不同的功能,这就是方法的重载
3.构造器的调用
-
子类在创建对象时,会自动调用父类的无参构造器(如果父类有无参构造器)。如果父类没有无参构造器,则子类需要显式调用父类的带参构造器,如
BBB.java中的super(name)
4.继承层次
-
Java 只支持单继承,即一个子类只能继承一个父类。这是为了避免多重继承可能带来的复杂性问题,如 “菱形继承” 问题(Diamond Problem)
-
例如,
BBB.java只能继承自AAA.java,不能同时继承多个父类
二、相关代码示例及分析
1. 示例:AAA.java
package com.qcby;public class AAA {public void testA() {System.out.println("该方法当中有很多逻辑运算----》AAA");}public AAA(String name) {// 父类带参构造器}
}
-
AAA类定义了一个方法testA和一个带参构造器
2. 示例:BBB.java
package com.qcby;public class BBB extends AAA {public void testA() {System.out.println("该方法当中有很多逻辑运算----》BBB");}public void name() {super.testA(); // 调用父类的方法testA(); // 调用子类自己的方法}public BBB(String name) {super(name); // 调用父类的带参构造器}
}
-
BBB类继承了AAA类,并重写了testA方法 -
在
name方法中,通过super.testA()调用了父类的testA方法,展示了如何在子类中调用父类的方法 -
子类的构造器调用了父类的
super(name),确保父类的初始化
3. 示例:Test.java(继承测试)
package com.qcby;public class Test {public static void main(String[] args) {BBB bbb = new BBB("Example");bbb.name(); // 输出:// 该方法当中有很多逻辑运算----》AAA// 该方法当中有很多逻辑运算----》BBB}
}
-
在
main方法中,创建了BBB类的对象,并调用了name方法,演示了继承和方法调用的过程
三、静态初始化与构造函数调用顺序
1. 示例代码:Demo.java
package stack;public class Demo {public Demo(String aa) {System.out.println("====" + aa);}static {System.out.println("11");}public static Demo demo = new Demo("+++");static {System.out.println("22");}public static void main(String[] args) {Demo demo = new Demo("----");}
}
2. 运行结果
11
11
===+
22
===-
3. 分析
-
静态块的执行顺序:静态块在类加载时执行,且按照代码中出现的顺序依次执行
-
在
Demo类中,有两个静态块和一个静态变量初始化。静态块的执行顺序是:-
首先执行第一个静态块(
System.out.println("11");) -
然后初始化静态变量
demo = new Demo("+++");,这会触发Demo类的构造函数执行 -
接着执行第二个静态块(
System.out.println("22");)
-
-
-
构造函数的调用顺序:构造函数在对象创建时调用。在
main方法中,调用new Demo("----");时:-
首先执行
Demo类的构造函数,输出====----
-
4. 总结
-
静态块用于类的初始化,执行顺序按照代码中的位置顺序。
-
构造函数用于对象的初始化,在创建对象时执行。
-
类加载过程中,静态块和静态变量初始化的顺序会影响程序的输出。
四、关键知识点总结
| 概念 | 说明 |
|---|---|
| 继承语法 | 使用 extends 关键字实现,子类继承父类的非私有属性和方法。 |
| 方法重写 | 子类可以重写父类的方法,方法名、参数列表必须相同,实现不同。 |
| 构造器调用 | 子类创建对象时,需调用父类的构造器(super)初始化父类成员。 |
| Java 单继承特性 | 一个子类只能继承一个父类,避免多重继承的复杂性。 |
| 静态块与构造函数 | 静态块用于类初始化,按代码顺序执行;构造函数用于对象初始化,在对象创建时调用。 |
五、实例代码与运行结果
1. 继承测试(Test.java)
package com.qcby;public class Test {public static void main(String[] args) {BBB bbb = new BBB("重写");bbb.name();bbb.testA();bbb.run();bbb.run("方法重载");}
}
2. 运行结果
该方法当中有很多逻辑运算----》AAA
该方法当中有很多逻辑运算----》BBB
该方法当中有很多逻辑运算----》BBB
该方法当中有很多逻辑运算----→BBB
3. 分析
-
调用
name方法时:-
先通过
super.testA()调用父类的testA方法。 -
再调用子类的
testA方法。
-
-
调用
run方法时,展示了方法重载的特性。
六、总结
-
继承是 Java 中面向对象编程的重要特性,允许我们扩展类的功能,实现代码复用。通过继承,子类可以获取父类的属性和方法,并在此基础上添加自己的特性
-
super关键字 在继承中扮演了重要角色,它可以用来调用父类的构造器、方法和属性 -
注意 Java 的单继承特性,避免过度使用继承,以保持代码的清晰性和可维护性
-
方法重载和重写 是继承机制中的常见概念,理解它们的区别和使用场景对于编写高质量的 Java 代码至关重要
-
静态块和构造函数的调用顺序 在类和对象的初始化过程中起着关键作用,需要根据实际需求合理安排代码
希望这篇博客能够帮助你更好地理解 Java 中的继承机制以及相关知识点!如有任何疑问,欢迎在评论区留言讨论。
相关文章:
Java中的继承及相关概念
在 Java 中,继承是一种允许一个类继承另一个类的特性。通过继承,子类可以获取父类的属性和方法,这有助于减少代码冗余并提高代码的可维护性。以下是关于文件内容的相关分析和知识点总结: 一、继承的核心概念 1.继承的语法 Java …...
赛博算命之 ”梅花易数“ 的 “JAVA“ 实现 ——从玄学到科学的探索
hello~朋友们!好久不见! 今天给大家带来赛博算命第三期——梅花易数的java实现 赛博算命系列文章: 周易六十四卦 掐指一算——小六壬 更多优质文章:个人主页 JAVA系列:JAVA 大佬们互三哦~互三必回!…...
DNS攻击方式有哪些,应该采取哪些应对措施?
在当今数字化时代,网络已成为人们生活和工作不可或缺的一部分。而 DNS(域名系统)作为互联网的关键基础设施,如同电话簿一般,将人们易于记忆的域名转换为计算机能够识别的 IP 地址,让我们能够轻松访问各类网…...
即梦(Dreamina)技术浅析(六):多模态生成模型
多模态生成模型是即梦(Dreamina)的核心技术之一,旨在结合文本和图像信息,生成更符合用户需求的视觉内容。多模态生成模型通过整合不同类型的数据(如文本和图像),能够实现更丰富、更精准的生成效果。 1. 基本原理 1.1 多模态生成模型概述 多模态生成模型的目标是结合不…...
如何优化爬虫以提高搜索效率
在数据采集和网络爬虫领域,优化爬虫性能是提升数据采集效率的关键。随着网页结构的日益复杂和数据量的不断增长,高效的爬虫能够显著降低运行时间和资源成本。本文将详细介绍如何优化爬虫以提高搜索效率,包括选择合适的工具、优化代码逻辑、使…...
Node.js中http模块(二)
一、http模块 http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer0) 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。 二、域名和域名服务器 尽管 I…...
android selinux 问题
参考 Android Selinux介绍,如何添加selinux 权限SELinux权限-总结添加Selinux 权限/常见的Selinux 权限问题为何Android普通APP可以执行私有数据中的so文件,而system app却不可以?Android SELinux权限概念和配置说明Selinux中的APP分类Andro…...
递增三元组(蓝桥杯18F)
暴力求解: #include<iostream> using namespace std; int main() {int N;cin >> N;int* A new int[N];int* B new int[N];int* C new int[N];for (int i 0; i < N;i) {cin >> A[i];}for (int i 0; i < N; i) {cin >> B[i];}for…...
计算机毕业设计SparkStreaming+Kafka广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 大数据毕业设计 深度学习 机器学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
FreeCAD创建零件(系列1)
1、新建草图绘制1个矩形 2、画1个半圆弧 3、增加一个约束点 4、标注距离 5、将线段转为辅助线 将图中的线段切换为辅助线,线条颜色之后转为蓝色线。 6、离开草图...
韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系
韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系 在当今这个科技日新月异的时代,企业之间的竞争早已超越了单纯的产品质量比拼,**售后服务成为了衡量消费电子行业各品牌实力与客户满意度的关键一环。**深圳市韶音…...
mes系统对工业数字化转型起到重要作用,它的实际应用有哪些
一、生产计划与调度 在工业数字化转型中,MES 系统能够对生产计划进行高效的管理和调度。通过与企业资源计划(ERP)系统的集成,MES 可以获取生产订单信息,并根据生产设备的状态、人员安排以及物料供应情况等因素&#x…...
mongodb 使用内存过大分析
os 分析 内存使用 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head -10swap 使用 for i in $(ls /proc | grep "^[0-9]" | awk $0>100); do awk /Swap:/{aa$2}END{print "$i",a/1024"M"} /proc/$i/smaps;done| sort -k2nr | headmo…...
网络安全:挑战、技术与未来发展
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 在数字化时代,网络安全已成为全球关注的焦点。随着互联网的普及和信息技术的高速发展,网络攻击的…...
从零开始玩转Docker:轻松开启容器化之旅
一、什么是 Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。简单来说,Docker 就像是一个超级 “快递箱”,…...
Python Pandas(5):Pandas Excel 文件操作
Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls 和 .xlsx 文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。 操作方法说明读取 Excel 文件pd.read_excel()读取 Excel 文件,返回 DataF…...
预算限制下R1推理模型的复制与LLM推理能力提升策略
摘要 在预算有限的情况下,复制R1推理模型并增强大型语言模型(LLM)的推理能力成为研究热点。本文介绍四种主要构建方法:微调预训练模型、设计轻量级架构、迁移学习及知识蒸馏。每种方法各有优势,适用于不同场景。同时&a…...
数据库基础练习4(有关索引,视图完整解答)
建立需要的表 学生表 mysql> create table studnet(sno int primary key auto_increment,sname varchar(30) not null unique,ssex varchar(2) check (ssex男 or ssex女) not null ,sage int not null,sdept varchar(10) default 计算机 not null); Query OK, 0 rows affe…...
【计组】实验五 J型指令设计实验
目录 一、实验目的 二、实验环境 三、实验原理 四、实验任务 代码 一、实验目的 1. 理解MIPS处理器指令格式及功能。 2. 掌握lw, sw, beq, bne, lui, j, jal指令格式与功能。 3. 掌握ModelSim和ISE\Vivado工具软件。 4. 掌握基本的测试代码编写和FPGA开发板使用方法。 …...
Redis03 - 高可用
Redis高可用 文章目录 Redis高可用一:主从复制 & 读写分离1:主从复制的作用2:主从复制原理2.1:全量复制2.2:增量复制(环形缓冲区) 3:主从复制实际演示3.1:基本流程准…...
SAP HCM自定义开发程序调用odata api 如何ping外网
网络:我们知道SAP系统一般是部署在内网,Successfactors是云系统,部署在公有云上面,那肯定是公网,那内网和外网数据传递就需要网络做相关的设置,今天遇到的问题是网络说已经把SAP系统映射到公网,…...
SAP HCM PFCG读取结构化权限参数
权限:HCM的权限分两套,一套是PFCG的普通权限,一套是结构化权限是根据组织ID限制访问权限的,今天我们讨论的话题如何把这两类的权限组合起来 场景:例如下载有个薪酬管理人员,他复制A和B部门,但是…...
Ubuntu 20.04配置网络
1,检查自己网络是否配通。 网络配置成功显示的网络图标 不成功的网络图标 如果看不见网络图标,可以使用ping命令。连接一下百度网。 ping www.baidu.com ping失败的样子 ping成功的样子 2,接下来进入正题,我们开始配置网络。 这…...
【hive】记一次hiveserver内存溢出排查,线程池未正确关闭导致
一、使用 MemoryAnalyzer软件打开hprof文件 很大有30G,win内存24GB,不用担心可以打开,ma软件能够生成索引文件,逐块分析内存,如下图。 大约需要4小时。 overview中开不到具体信息。 二、使用Leak Suspects功能继续…...
Windows编程:下载与安装 Visual Studio 2019
本节前言 在写作本节的时候,本来呢,我正在写的专栏,是 MFC 专栏。而 VS2010 和 VS2019,正是 MFC 学习与开发中,可以使用的两款软件。然而呢,如果你去学习 Windows API 知识的话,那么࿰…...
Unity3D实现Shader开发之径向模糊(实现镜头中间不模糊,四周模糊的效果)
系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果图👉二、实现步骤与原理详解👉三、实现方法👉壁纸分享👉总结👉前言 径向模糊(Radial Blur)是一种常见的图像特效,在 Unity 开发中常用于模拟聚焦、运动模糊等效果,让图像产生从中心向四周或从…...
iOS 自动翻滚广告条(榜单条)实现方案
引言 在直播场景中,榜单信息、活动公告或者广告推广通常需要以醒目的方式展示,但由于屏幕空间有限,一次只能显示一条内容。为了让用户能够持续关注这些信息,我们可以实现一个自动翻滚的广告条(或榜单条)&a…...
计算机视觉-拟合
一、拟合 拟合的作用主要是给物体有一个更好的描述 根据任务选择对应的方法(最小二乘,全最小二乘,鲁棒最小二乘,RANSAC) 边缘提取只能告诉边,但是给不出来数学描述(应该告诉这个点线是谁的&a…...
【JVM详解一】类加载过程与内存区域划分
一、简介 1.1 概述 JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关…...
Unity项目接入xLua的一种流程
1. 导入xlua 首先导入xlua,这个不用多说 2. 编写C#和Lua交互脚本 基础版本,即xlua自带的版本 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; using System; using System.IO;[Serializable] public…...
