Java SE--继承

一.为什么要继承呢?

可以保持原有类的功能上扩展新功能,继承主要解决的问题是共性的抽取,实现代码的复用

二.继承的语法

举例:

相关图像:

三.父类成员访问

1.子类中(注意访问父类的成员变量

了解原因:继承下来父类成员可能与子类成员同名时(主要原因),在子类成员方法中访问该类成员时该访问哪一个?或者利用子类对象引用同名成员时该访问哪一个?

子类方法中(在父类方法不一样)或子类对象访问成员时:

如果访问的成员变量子类中有,优先访问自己的成员变量。

如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义。

如果访问的成员变量与父类中成员变量同名,则优先访问自己的。

成员变量访问遵循就近原则,自己有优先自己的,如果没有则向父类中找。

举例和相关图像:

2.子类中访问父类的成员方法

子类方法中子类对象访问成员方法时:

通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到则访问,否则编译报错。

通过派生类对象访问父类与子类同名方法时,如果父类和子类同名方法的参数列表不同(重载),根据调用方法适传递的参数选择合适的方法访问,如果没有则报错;如果父类和子类同名方法的参数列表相同(重写以后会讲)成员方法访问遵循就近原则,自己有优先自己的,如果没有则向父类中找。

举例和相关图像:

问题:如果出现在继承时出现同名成员变量或方法时,我们该在子类中如何访问与父类的成员变量和方法同名的成员变量和方法呢?

 四.super关键字

作用:在子类中访问父类的成员变量和方法

五.子类构造方法

1.若父类显式定义无参或者默认的构造方法在子类构造方法第一行默认有隐含的super()调用,即调用基类构造方法

2.如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。

3.在子类构造方法中,super(..)调用父类构造时,必须是子类构造函数中第一条语句

4.super(..)只能在子类构造方法中出现一次,并且不能和this同时出现(讲this和super区别会讲)

六.this和super的区别

相同点:

1.都是lava中的关键字

2.只能在类的非静态方法中使用,用来访问非静态成员方法和字段

3.在构造方法中调用时,必须是构造方法中的第一条语句,并且不能同时存在

不同点:

1.this是当前对象的引用,当前对象即调用实例方法的对象,super相当于是子类对象中从父类继承下来部分成员的引用

2.在非静态成员方法中,this用来访问本类的方法和属性,super用来访问父类继承下来的方法和属性

3.在构造方法中:this(..)用于调用本类构造方法,super(..)用于调用父类构造方法,俩者都必须是构造方法的第一条语句,所以两种调用不能同时在构造方法中出现
4.构造方法中一定会存在super(..)的调用,用户没有写编译器也会增加,但是this(..)用户不写则没有

七.再谈初始化

之前在谈初始化时执行顺序时没有继承,那继承时执行顺序会是什么样呢?

由上述代码加上之前学习的对执行顺序进行总结:

步骤类别执行类容
1父类静态父类static修饰的成员变量初始化----》父类静态代码块
2子类静态子类static修饰的成员变量初始化----》子类静态代码块
3父类实例父类实例变量初始化---》父类实例代码块---》父类构造方法
4子类实例子类实例变量初始化---》子类实例代码块---》子类构造方法

八.protected(类和对象补充访问限定符)

代码举例:

九.继承方式

1.单继承

2.多层继承(最好别超过3层)

3.不同类继承一个类

4.多继承(不支持)

十.final关键字

1.修饰变量或字段(类中成员变量):表示常量(既不能修改)

2.修饰类:表示该类不能被继承,叫做密封类

3.修饰方法:表示该方法不能被重写(以后讲)

十一.继承和组合

继承表示对象之间是is-a的关系,比如:狗是动物,猫是动物
组合表示对象之间是has-a的关系,比如:汽车和其轮胎、发动机、方向盘、车载系统等的关系就应该是组合,因为汽车是有这些部件组成的

举例:

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

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

相关文章

掌握 Winget 安装:从 Microsoft Store 到 winget-install 脚本的完整方案

掌握 Winget 安装:从 Microsoft Store 到 winget-install 脚本的完整方案 Winget 作为 Windows 官方推出的命令行包管理工具,能极大简化软件的安装、升级与卸载流程。本文将系统梳理从官方渠道到第三方工具的多种安装方式,涵盖普通用户、开发…

简单来说:Redis的增量同步是怎么一回事

简单来说: 增量同步就是Master 只把比 Slave 新的数据发给 Slave,而不是发送全部数据。它像一个持续更新的直播流,或者我之前比喻的“每日更新期刊”。Slave 不用重新加载所有数据,只需要接收和应用这些新的更新。 这就像&#xf…

MySQL 安全优化指南:保护你的数据库免受攻击

在当今高度互联的数字世界中,数据是企业的核心资产,而数据库则是存储这些资产的堡垒。作为最流行的开源关系型数据库之一,MySQL 被广泛应用于各种业务场景。然而,其普及性也使其成为网络攻击者青睐的目标。一旦数据库被攻破,可能导致敏感数据泄露、业务中断、声誉受损,甚…

界面控件Telerik UI for WinForms 2025 Q2亮点 - 支持.NET 10 Preview

随着2025年第二季度新版本的发布,Progress Telerik通过流行的集成IDE的AI编码助手,基于提示的样式和基于GenAI的报表见解重新定义了开发人员的工作效率! Telerik和Kendo UI在构建尖端应用程序时继续推动开发人员工作效率提升,202…

DVWA靶场通关笔记-验证码绕过reCAPTCHA(Medium级别)

目录 一、reCAPTCHA 二、代码审计(Medium级别) 1、渗透准备 (1)配置security为Medium级别。 (2)配置RECAPTCHA参数 (3)再次打开靶场 2、源码分析 (1)…

人工智能安全基础复习用:对抗样本检测与防御

一、对抗样本(Adversarial Examples)定义:对输入样本添加人眼无法察觉的细微干扰,导致模型以高置信度输出错误结果。对抗样本的分布通常偏离自然数据分布,与正常样本在模型中间层/输出层的分布存在差异。核心目标&…

[数学基础] 矩阵的秩及其应用

深入浅出:矩阵的秩及其应用 文章目录深入浅出:矩阵的秩及其应用一、数学定义二、核心作用三、计算方法与步骤方法1:高斯消元法(最常用)方法2:奇异值分解(SVD)方法3:行列式…

LKH-3算法求解TSP问题基本原理与应用

通俗理解LKH-3算法 LKH-3(Lin-Kernighan-Helsgaun)是求解**旅行商问题(TSP)**的最强启发式算法之一,由丹麦计算机科学家Keld Helsgaun在LKH-2基础上改进而来。它的核心思想是:通过智能的“局部破坏与修复”…

游戏开发学习记录

初始化只是第一次实例化的时候调用,show和unshow是打开界面和关闭界面的时候,会多次调用 在一个脚本里面show是每一次打开界面的时候需要做的事情,而Init是初始化。UIMgr里面的数据结构:为什么我要先从数据结构入手呢?…

一级缓存与二级缓存深度剖析:作用域、配置与同步方案全解析

引言 在分布式系统与高并发场景下,缓存机制已成为提升系统性能的关键技术。本文从作用域、失效机制、配置实践到同步方案,系统化解析一级缓存与二级缓存的核心差异与工程实践。 一、一级缓存:会话级数据加速器 1.1 作用域与生命周期 作用域&a…

OneCode MQTT插件开发实战:基于Paho.Client的物联网通信解决方案

引言 在物联网应用开发中,MQTT协议因其轻量、低带宽占用的特性被广泛采用。OneCode平台提供的xui.MQTT插件基于Eclipse Paho.Client实现了完整的MQTT通信能力,本文将从插件用途、核心实现、开发要点和功能扩展四个维度,详解如何基于该插件构建…

1.1_5_1 计算机网络的性能指标(上)

在这个小节中我们要学习计算机网络的性能指标,我们在考研当中主要掌握这样的七个性能指标,分别是速率、带宽、吞吐量、时延、时延带宽积、往返时延和信道利用率。我会把相关性比较紧密的性能指标放在一起讲解。在这个视频中,我们先来学习前三…

Python 性能优化指南:深入剖析代码分析与优化工具

Python 性能优化指南:深入剖析代码分析与优化工具 在 Python 的广泛应用场景中,性能优化既是挑战,也是机遇。无论是构建 Web 应用还是处理数据分析,理解代码性能瓶颈并有效优化至关重要。本文将探讨 Python 代码性能分析的核心方法,并逐步解析关键工具的使用技巧,带您从…

力扣打卡第二十一天 中后遍历+中前遍历 构造二叉树

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7], postor…

Notepad++正则表达全解

摘要:Notepad正则表达式符号大全包含11类常用语法:基础符号(.^$?等)、预定义字符类(\d\w\s等)、锚点(\b\B)、量词({n,m})、分组引用(()$1)、字符…

前后端分离(java) 和 Nginx在服务器上的完整部署方案(redis、minio)

一、准备工作 服务器环境要求 银河麒麟 V10 操作系统 开放端口:MinIO (9000、9001)、 Redis (6379)、应用服务 jar包(18888)、前端服务(8080) 系统用户:具有 sudo 权限的用户 操作:需要先有必备的工具前端的vsCode,webStrom、后台的idea&…

贪心算法:简单而高效的求解策略C++

贪心算法详解及C实现 1. 什么是贪心算法 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。 贪心算法与动态规划不同在于它…

IDEA 中使用 <jsp:useBean>动作指令时,class属性引用无效

问题&#xff1a;在 IDEA 中创建 Java Web项目&#xff0c;在src/model包下存在一个Student类该类中包含&#xff1a;全参构造器、私有属性的get/set方法。然后在 jsp 页面中使用 <jsp:useBean>创建Student类的对象&#xff1a;访问页面时报错&#xff1a;原因&#xff1…

【网络】Linux 内核优化实战 - net.core.flow_limit_table_len

目录参数作用查看与修改调优建议相关警告net.core.flow_limit_table_len 是 Linux 内核中的一个网络参数&#xff0c;用于控制**流限制表&#xff08;Flow Limit Table&#xff09;**的大小。这个表主要用于限制网络流量中单个"流"&#xff08;通常指来自同一源IP、端…

前端开发常见问题技术文章大纲

前端开发常见问题技术文章大纲 常见性能优化问题 页面加载速度慢的原因及解决方案渲染阻塞资源的优化方法内存泄漏的检测与修复 跨浏览器兼容性问题 不同浏览器对CSS和JavaScript的支持差异Polyfill和Shim的使用场景如何利用工具检测兼容性问题 响应式设计挑战 媒体查询的最佳实…