java面向对象——继承以及super关键字

继承的概念

1. 被继承的类称为父类(超类),继承父类的类都称为子类(派生类)
2. 继承是指一个对象直接使用另一个对象的属性和方法,但是能继承非私有的属性和方法;(1) 构造方法不能被继承。(2) 但是子类的构造方法可以调用父类的构造方法(3)在子类的构造方法中使用super关键字可以调用父类的构造方法。
3. Java 只能实现单继承,即一个类只能有一个父类
4. 允许多层继承,即一个子类可以有一个父类,一个父类也可以有其他的父类;
5. 调用父类的构造方法时,子类必须通过 super(~~)调用父类的带参构造方法,
super 只能在子类构造方法中的第一句;

super关键字【总结八点】:

super用在子类中,目的只有一个,那就是访问父类中被隐藏的内容。(1) 无法通过super访问父类的private成员(2) super只能出现在子类(子类的实例方法或构造方法中)。(3) 使用 super 调用父类中的构造方法(super(实参)形式),必须在子类构造方法的“第一条语句”,调用父类中相应的构造方法,
若不显示的写出来,默认调用父类的无参构造方法,比如:super();1. 调用父类构造方法:在子类的构造方法中使用 super() 可以调用父类的构造方法,以初始化父类的部分。这通常用于确保在子类对象创建时,父类的初始化代码也得到执行。2. 访问父类成员:使用 super 关键字可以访问父类的字段和方法。super.field:访问父类的字段。super.method():调用父类的方法。3.在子类中重写父类方法:在子类中重写父类的方法时,可以使用 super 来调用父类的版本。这在子类想要扩展父类方法的行为时很有用。4.避免方法名冲突:如果子类和父类中有同名的方法,可以使用 super 来区分调用哪个类的方法。5. 在构造方法中的使用:在子类构造方法中的第一行使用 super() 可以调用父类的无参构造方法。如果父类没有无参构造方法,需要显式调用其他构造方法并传入参数。6. 静态上下文中的使用:super 不能在静态上下文中使用,因为它是与实例相关的关键字。7. 接口的默认方法:如果一个类实现了多个接口,而这些接口有同名的默认方法,可以使用 super 来调用特定接口的默认方法。例如:super.InterfaceName.super.method()。8. 构造方法与 this 和 super 的关系:构造方法中的 this() 和 super() 不能同时使用,因为它们都必须作为构造方法的第一行。

方法的重写(overriding)

1)在继承关系中,子类与父类的方法要求:必须有相同的方法名称,相同的参数列表,返回值类型相同。
2)子类抛出的异常不能超过父类相应方法抛出的异常
3)子类方法的访问级别不能低于父类相应方法的访问级别
4)父类中的方法若使用 private、static、final 任意修饰符修饰,那么,不能被子类重写。

方法的隐藏

	隐藏是对于静态方法和成员变量(静态变量和实例变量)而言的发生条件:子类和父类存在同名、同参数列表(参数类型和数量)的**静态方法**。隐藏与重写最本质的区别是,重写是多态的前提,利用重写可以实现多态,而隐藏则无法实现多态。隐藏是在编译时解决的重写与隐藏的根本区别:
(1)如果子类重写了父类的方法,则通过父类的引用调用的是子类的方法;
(2)如果子类隐藏了父类的方法,则通过父类的引用调用的仍然是父类的方法;
(3)这表明了实例方法的调用是动态绑定的,是在运行的时候根据对象真正的类型来决定调用哪个方法,而静态方法的调用是静态绑定的,是根据引用的类型来决定调用哪个方法。

成员变量的隐藏

当子类继承了父类,在子类中声明了与父类具有相同名称的成员变量时,那么就说子类隐藏了父类中的成员变量。子类不能重写父类中的成员变量,只能隐藏。

所以,不管是静态变量还是实例变量,打印的是父类还是子类的成员变量取决于引用的类型,而不是对象的类型,因为子类隐藏了父类的成员变量。
在这里插入图片描述

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

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

相关文章

opencv进阶12-EigenFaces 人脸识别

EigenFaces 通常也被称为 特征脸,它使用主成分分析(Principal Component Analysis,PCA) 方法将高维的人脸数据处理为低维数据后(降维),再进行数据分析和处理,获取识别结果。 基本原理…

pdf转word最简单方法~

pdf转word最简单方法!pdf转word最简单方法我们都知道,PDF文件是一种只读文件格式,无法按照需求对PDF文件进行更改与编辑,从而影响到了PDF文件的使用。所以,我们需要将PDF文件转换为word文档,以此来保证文件…

[oneAPI] 基于BERT预训练模型的命名体识别任务

[oneAPI] 基于BERT预训练模型的命名体识别任务 Intel DevCloud for oneAPI 和 Intel Optimization for PyTorch基于BERT预训练模型的命名体识别任务语料介绍数据集构建使用示例 命名体识别模型前向传播模型训练 结果 参考资料 比赛:https://marketing.csdn.net/p/f3…

Mac下Jmeter安装及基本使用

本篇文章只是简单的介绍下Jmeter的下载安装和最基本使用 1、初识Jmeter 前一段时间客户端app自测的过程中,有偶现请求某个接口返回数据为空的问题,领导让我循环100次请求这个接口,看看有没有结果为空的问题。听同事说有Jmeter的专业测试工具…

金融市场中的机器学习;快手推出自研语言模型“快意”

🦉 AI新闻 🚀 OpenAI可能面临《纽约时报》的起诉,侵犯知识产权引发争议 摘要:OpenAI使用《纽约时报》的文章和图片来训练AI模型,违反了《纽约时报》的服务条款,可能面临巨大损失。此前,也有其…

Vue2.0+webpack 引入字体文件(eot,ttf,woff)

webpack.base.config.js 需要配置 {test:/\/(woff2?|eot|ttf|otf)(\?.*)?$/,loader: url-loader,options: {limit: 10000,name: utils.assetsPath(fonts/[name].[hash:7].[ext])}} 如果 Vue2.0webpack3.6引入字体文件(eot,ttf,woff&…

素材准备——准备用于标注和训练的图片素材——从视频监控视频中生成图片素材

为了实现我们对特定场景下的图像识别功能,我们需要依托YOLO V8工具,对大量的图片进行目标标准和训练。因此我们首先要做的一项工作便是准备大量的用于标准和训练做续的图片。 由于在实际项目中,特别是以公安交管所需要的场景中,我们很难单纯依托网络下载的方式获得所需要的…

批量爬虫采集大数据的技巧和策略分享

目录 1. 使用多线程或异步编程: 2. 设置适当的请求频率: 3. 使用代理服务器: 4. 处理异常和错误: 5. 监控和管理任务队列: 6. 数据存储和处理: 7. 随机化请求参数和头信息: 8. 定时任务…

[ubuntu]ubuntu18.04使用自带共享桌面实现vncserver连接

vncserver有很多方法比如你安装vnc4server,tightvncserver,x11vnc等都可以实现vnc局域网连接,今天使用系统共享桌面设置vnc连接 Ubuntu开启远程桌面 Ubuntu18.04使用gnome桌面环境,系统自带屏幕共享和远程登录功能,默认使用的是vino作为VNC…

【数据结构】回溯算法公式化解题 leetcode经典题目带刷:全排列、组合、子集

目录 回溯算法一、什么是回溯算法1、基本思想:2、一般步骤: 二、题目带练1、全排列2、组合3、子集 三、公式总结 回溯算法 一、什么是回溯算法 回溯算法(Backtracking Algorithm)是一种解决组合问题、排列问题、选择问题等一类问…

layui框架学习(37:学习laytpl基本语法)

layui中的模板引擎模块laytpl属于轻量的 JavaScript 模板引擎,支持在页面中将指定的数据按指定的模板进行展示或处理,此处的模板是指一段包含html和脚本的文本(感觉类似asp.net core中的razor标记语言,在网页中嵌入基于服务器的代…

adb devices存在连接emulator-5554怎么办

执行adb kill-server 发现还是有5554这条数据,可以采用window杀死端口号的方法。 netstat -ano | findstr 5554 ,去查看pid是什么 得到pid,杀死这个pid taskkill /f /pid xxx

Selenium环境+元素定位大法

selenium 与 webdriver Selenium 是一个用于 Web 测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器 WebDriver 就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的Selenium WebDriver API。 使…

docker的资源控制及docker数据管理

目录 一.docker的资源控制 1.CPU 资源控制 1.1 资源控制工具 1.2 cgroups有四大功能 1.3 设置CPU使用率上限 1.4 进行CPU压力测试 1.5 设置50%的比例分配CPU使用时间上限 1.6 设置CPU资源占用比(设置多个容器时才有效) 1.6.1 两个容器测试cpu 2&…

ES 索引重命名--Reindex(一)

ES reindex脚本流程,下图为整体流程: 步骤(1):每次写入把之前的索引删除再重新创建索引,然后判断索引是否创建成功,由于创建成功返回结果是json,因此用Json Input插件去解析json获得…

【笔记】Spark3 AQE(Adaptive Query Execution)

提效 7 倍,Apache Spark 自适应查询优化在网易的深度实践及改进 Performance Tuning 配置Spark SQL开启Adaptive Execution特性 How To Use Spark Adaptive Query Execution (AQE) in Kyuubi 【spark系列3】spark 3.0.1 AQE(Adaptive Query Exection)分析 玩转Spark…

数据结构 - 线性表的顺序存储

一、顺序存储定义: 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中。简言之,逻辑上相邻,物理上也相邻顺序表中,任一元素可以随机存取(优点) 二、顺序表中元素存储位置的计算 三、顺序表在算法中的实…

【C++】运算符重载 | 赋值运算符重载

Ⅰ. 运算符重载 引入 ❓什么叫运算符重载? 就是:运用函数,将现有的运算符重新定义,使其能满足各种自定义类型的运算。 回想一下,我们以前运算的对象是不是都是int、char这种内置类型? 那我们自定义的“…

ctfshow-web10 with rollup 绕过

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 基本方法,到处点一点,点到取消的时候,突然发现,可以下载一个文件: 看到这个源码,可以看到只能是通过满足下面的条件来拿到flag&#xff…

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测,WOA-CNN-GR…