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)这表明了实例方法的调用是动态绑定的,是在运行的时候根据对象真正的类型来决定调用哪个方法,而静态方法的调用是静态绑定的,是根据引用的类型来决定调用哪个方法。
成员变量的隐藏
当子类继承了父类,在子类中声明了与父类具有相同名称的成员变量时,那么就说子类隐藏了父类中的成员变量。子类不能重写父类中的成员变量,只能隐藏。
所以,不管是静态变量还是实例变量,打印的是父类还是子类的成员变量取决于引用的类型,而不是对象的类型,因为子类隐藏了父类的成员变量。

相关文章:
java面向对象——继承以及super关键字
继承的概念 1. 被继承的类称为父类(超类),继承父类的类都称为子类(派生类) 2. 继承是指一个对象直接使用另一个对象的属性和方法,但是能继承非私有的属性和方法;(1) 构造方法不能被继承。(2) 但…...
[机缘参悟-101] :IT人 - 遵从世界本源的样子,不带个人情感、道德、认知倾向,接纳一切,你就拥有无限的力量
目录 道的本义 如来的本义 观音的本义 无为而治本质是顺势而为 儒家的本质 感悟: 道的本义本质:天地的力量和运行规律 "天地以万物为刍狗"是出自《道德经》第五十章的一句话。在这句话中,"天地"指的是宇宙&#x…...
C++--深度理解智能指针
PS:智能指针简单应用看这里 http://t.csdn.cn/qN7IK 1.智能指针的介绍 在C中,智能指针有三个版本,分别为: auto_ptr unique_ptr shared_ptr 这三个版本的智能指针中,shared_ptr最为完善,auto_ptr基本上没有太大用…...
Spring Boot使用MySQL的默认连接池
笔者在近期秋招面试的时候被问到了这个问题,现在简单梳理一下便于后期重新回顾,并加深记忆。 Spring Boot 默认使用的数据库连接池是 HikariCP(开源库地址)。 HikariCP 是目前性能最好的连接池之一,它具有高度的性能、可靠性和可扩展性&…...
conda使用教程
Conda介绍 conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理和环境管理。包管理与pip的使用方法类似似,环境管理则是允许用户方便滴安装不同版本的python环境并在不同环境之间快速地切换。 conda的设计理念 conda将几乎所有…...
什么是LLM大语言模型?
什么是LLM大语言模型? 大语言模型(英文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练࿰…...
jenkins同一jar包部署到多台服务器
文章目录 安装插件配置ssh服务构建完成后执行 没有部署过可以跟这个下面的步骤先部署一遍,我这篇主要讲jenkins同一jar包部署到多台服务器 【Jenkins】部署Springboot项目https://blog.csdn.net/qq_39017153/article/details/131901613 安装插件 Publish Over SSH 这…...
(四)Doceke安装MySQL镜像+Docker启动MySQL容器
Doceke安装MySQL镜像/Docker启动MySQL容器 一、doceke安装MySQL镜像 切换到root用户,su root 。 1、启动Docker 启动:sudo systemctl start docker 停止:systemctl stop docker 重启:systemctl restart docker 查看docker运行…...
Android Studio:Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
原项目使用jdk8,升级gradle后出现的该问题。 java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7at org.codehaus.groovy.vmplugin.VMPluginFactory.<clinit>(VMPluginFactory.java:43)at org.codehaus.gro…...
Spring Clould 搜索技术 - elasticsearch
视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) 初识ES-什么是elasticsearch(P77,P78) 1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能…...
android核绑定cpuset配置与检测进程所在核cpuset方法
一、开机阶段 开机有如下阶段。抛开开机动画需要的audio、surfaceflinger等进程,大部分android程序是在/data分区加载完整以后开始加载。所以cpuset的配置可以在 post-fs-data之后。注意,init.rc的不同阶段脚本都可能覆盖前面配置的cpuset。配置好检查与…...
Lnton羚通关于如何使用nanoPC-T4 安装OpenCV?
nanoPC-T4 安装 OpenCV Note: OpenCV has been pre-installed in FriendlyCore/FriendlyDesktop (Version after 201905) and does not require manual installation. Please download the latest FriendlyCore/FriendlyDesktop Image file from the following URL: http://do…...
内存泄漏:前端开发者的噩梦——内存泄露的原因及排查
在前端开发中,内存泄漏是一个常见但令人头疼的问题。它会导致应用程序变得缓慢,不稳定,最终可能崩溃。本文将介绍内存泄漏的概念、常见泄漏原因以及如何排查和预防内存泄漏。 什么是内存泄漏? 内存泄漏是指应用程序中的内存被错…...
高效使用ChatGPT之ChatGPT客户端
ChatGPT客户端,支持Mac, Windows, and Linux 下载地址见文章结尾 软件截图 Windows: Mac: 说明 chatgpt桌面版,相比于网页版的chatgpt,最大的特色是支持历史聊天对话记录导出,且支持三种格式:PNG、PDF、…...
【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据
【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据 文章目录 【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据前言出现的背景一、TDSQL-C数据库是什么?二、TDSQL-C 的特点三、TDSQL-C的应用场景四、基于TD…...
leetcode 6450. k-avoiding 数组的最小总和
给你两个整数 n 和 k 。 对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。 返回长度为 n 的 k-avoiding 数组的可能的最小总和。 示例 1: 输入:n 5, k 4 输出&#…...
变压器绝缘油耐压试验
试验目的 绝缘油是电气设备常用的绝缘、 灭弧和冷却介质。 为保证它在运行过程中具有良好的性能, 必须定期对其进行各项试验, 尤其是耐压试验。 绝缘油的耐压试验是在专用的击穿电压试验器中进行的, 试验器包括一个瓷质或玻璃油杯、 两个直径…...
Windows控制台API官方文档
2023年8月21日,周下午 中文文档:控制台函数 - Windows Console | Microsoft Learn 英文文档:Console Functions - Windows Console | Microsoft Learn...
PyTorch DataLoader 报错 “DataLoader worker exited unexpectedly“ 的解决方案
注意:博主没有重写d2l的源代码文件,而是创建了一个新的python文件,并重写了该方法。 一、代码运行日志 C:\Users\Administrator\anaconda3\envs\limu\python.exe G:/PyCharmProjects/limu-d2l/ch03/softmax_regression.py Traceback (most r…...
【AI绘画--七夕篇】:七夕特别教程,使用SDXL绘制你的心上人(Stable Diffusion)(封神榜—妲己)
目录 前言0、介绍0-0、结果展示0-1、Stable Diffusion0-2、sdxl介绍 一、云端部署Stable Diffusion1-1、云端平台的优势 二、平台介绍三、注册账号并且开始炼制3-1、购买算力并创建工作空间3-2、启动工作空间3-3、应用市场一键安装3-4、使用Stable-Diffusion作图 四、有女朋友的…...
数说故事解读AI品牌心智:让品牌被AI看见、推荐与信任
当AI全面进入商业决策、智能体成为企业标配,品牌增长逻辑正在发生底层重构:品牌不再只是面对消费者,更需要被AI识别、理解、推荐与信任。数说故事在2026 D3智慧增长大会上提出全新观点——AI品牌心智,将成为AI共生时代品牌最重要的…...
零成本AI评审知识库:基于GitHub Actions与Gemini的自动化学术发布平台
1. 项目概述:一个零成本、AI驱动的开放知识库如果你是一名研究者、开发者,或者正在构建一个需要实时验证信息的AI智能体,那么你一定对传统学术出版的漫长周期和封闭性感到头疼。一篇论文从投稿到发表,动辄数月,评审过程…...
初次使用Taotoken模型广场进行选型与切换的直观体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用Taotoken模型广场进行选型与切换的直观体验 对于开发者而言,接入大模型API后,面对的第一个现实问题…...
Vivado里配置RFSoC数据转换器IP,这10个参数新手最容易搞错(附PG269避坑指南)
Vivado中RFSoC数据转换器IP配置的10个关键参数解析与实战避坑指南 第一次在Vivado中配置RFSoC的数据转换器IP核时,面对密密麻麻的参数选项,即使是经验丰富的FPGA工程师也可能感到无从下手。RFSoC作为集成了高速数据转换器的异构计算平台,其配…...
告别软件模拟!用GD32F303硬件I2C驱动AT24C02 EEPROM保姆级教程(附完整代码)
从软件模拟到硬件加速:GD32F303硬件I2C驱动AT24C02全流程解析 当你在嵌入式项目中频繁操作EEPROM时,是否遇到过这样的困扰:软件模拟I2C占用大量CPU资源,时序稳定性受中断影响,传输速率始终无法突破瓶颈?这些…...
量子计算误差缓解技术:Qiskit实现与工程实践
1. 量子计算误差缓解的必要性与挑战在当前的NISQ(Noisy Intermediate-Scale Quantum)时代,量子计算机的硬件限制使得误差累积成为阻碍实用化的主要瓶颈。以氢分子基态能量计算为例,未经误差缓解的VQE计算结果可能偏离理论值达20%以…...
告别混乱!WPF项目如何用ResourceDictionary优雅管理样式和转换器(附完整项目结构)
告别混乱!WPF项目如何用ResourceDictionary优雅管理样式和转换器(附完整项目结构) 当WPF项目从Demo阶段步入正式开发,资源管理往往会成为第一个"拦路虎"。我曾接手过一个中型设备管理系统的UI重构,打开项目时…...
开源硬件测试框架OpenClaw Harness:从GPIO到CI/CD的自动化测试实践
1. 项目概述:一个开源硬件测试框架的诞生最近在折腾一些嵌入式开发和硬件原型项目,发现一个挺普遍的问题:当你手头有一堆传感器、执行器或者自己设计的电路板时,怎么高效、可靠地对它们进行功能测试和性能验证?用万用表…...
番茄小说下载器完整指南:如何轻松搭建个人离线图书馆
番茄小说下载器完整指南:如何轻松搭建个人离线图书馆 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为网络不稳定无法畅读番茄小说而烦恼吗?番茄小…...
