继承的笔记
继承
对象代表什么, 就得封装对应的数据, 并提供数据对应的行为
对于两种不同的类, 但是具有很多共同的属性的时候我们就想着用继承, 我们可以将共同的属性放置在一个类中, 然后, 只需要新建两个类, 继承共有的类, 然后单独写自己的属性特点
继承类
Java 中提供了一个关键字 extends, 用这个关键字, 我们可以让一个类和另一个类建立联系
public class Student extends Person{}
其中 Student 称为子类 (派生类), Person 称为父类 (基类或超类)
使用继承的好处
可以把多个子类中重复的代码抽取到父类中了, 提高了代码的复用性
子类可以在父类的基础上, 增加其他的功能, 使得子类的功能更加完善
当类与类之间, 存在相同的内容, 并满足子类是父类的一种, 就可以考虑使用继承, 来优化代码
继承的特点
Java 只支持单继承, 不支持多继承,就和人一样,一个人只能由一个爸爸,但是爸爸还可以有爸爸,爷爷也可以由爸爸,这就是多层继承
一个子类只能继承一个父类, 但支持多层继承
多层继承, 子类 A 继承父类 B, 父类 B 可以继承父类 C
虚拟机会自动为类添加继承对象 Object
Java 中所有类都继承自 Object 类。Object 类是 Java 语言中所有类的根类,它定义了一些共同的方法,例如 equals ()、hashCode ()和 toString ()等。如果一个类没有显式地继承任何类,那么它默认会继承 Object 类
Object 自带的有方法
子类到底能继承父类的哪些内容
假设我们的构造方法能够继承的话,那么我们子类继承下来的构造方法就有可能和子类的类名不一致,因为这个传递下来的构造方法的名字是父类的名字
继承成员变量
非私有的变量能够直接继承,并且直接使用
私有的变量能够继承,但是不能直接使用,我们可以利用接口进行使用
非私有变量
私有变量
继承成员方法
在 Java 中,私有方法是不能被继承的主要原因是封装性和安全性。
首先,私有方法是被设计为只能在类内部使用的方法。它们通常用于辅助其他公共方法或内部实现细节,并且不希望被外部类或子类直接调用。将私有方法继承给子类可能会破坏对这些方法的封装性,使得子类可以直接访问并调用这些方法,进而破坏类的设计意图和安全性。
其次,私有方法对于子类来说是不可见的。继承是一种从父类派生出子类的关系,在子类中可以访问和重写父类的方法。然而,私有方法对于子类来说是不可见的,因为它们只能在定义它们的类内部被访问。所以子类无法继承、访问或重写父类的私有方法。
总结起来,私有方法是为了实现封装和保护类的内部实现细节而设计的,不被子类继承是为了确保类的安全性和封装性。如果需要在子类中重用某个方法,可以将该方法定义为受保护的或公共的,以便子类可以继承和使用。
方法并不是一个一个继承的,而是我们在最高一级的类里面定义一个虚方法表,包括:
非 private
非 static
非 final
只有父类的这三种对象才会继承
继承中需要学的点
继承中成员变量的访问特点
就近原则,谁离我近,我就用谁
Super 只能调用一个 super,这个 super 就是类的父类
使用变量的时候,先到本类的成员变量找,然后在到父类的成员变量去找。
成员方法的访问特点
直接调用的话就满足就近原则,谁距离我近,我就用谁
方法的重写
当父类的方法不能满足子类现在的需求了,我们就需要进行子类的重写
书写格式:
在继承体系中,子类中出现了和父类中一模一样的方法声明,我们就称子类的这个方法是重写的方法
@Override 重写注释
- @Override 是放在重写后的方法上,校验子类重写时语法是否正确
- 加入注解后如果有红色波浪线,表示语法错误
- 建议重写方法都加@Override 注解,代码安全,优雅
方法的重写就是覆盖父类传下来的虚方法表
- 重写方法的名称、形参列表必须与父类中的一致。
- 子类重写父类方法时,访问权限子类必须大于等于父类(暂时了解︰空着不写<protected <public),父类时 public ,子类就不能时 protect,private,但是子类的访问权限可以更高一点
- 子类重写父类方法时,返回值类型子类必须小于等于父类,这个一般是在说当父类返回类型是比较大的对象是比如 Animal,那么子类可以是 cat,dog,但是当父类是 dog,cat 类的时候子类不能是 animal 类
- 建议: 重写的方法尽量和父类保持一致。
- 只有被添加到虚方法表中的方法才能被重写
继承中的构造方法
子类的构造函数写的时候是利用这个 super 进行构造的,我们要注意,这个构造也可以用 alt insert 来进行快捷插入
父类的构造方法不会被子类继承
子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。
为什么
- 子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。
- 子类初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化。
怎么调用父类构造方法的 - 子类构造方法的第一行语句默认都是: super (),不写也存在,且必须在第一行。
- 如果想调用父类有参构造,必须手动写 super 进行调用。
继承中构造方法的访问特点是什么?
- 子类不能继承父类的构造方法,但是可以通过 super 调用
- 子类构造方法的第一行,有一个默认的 super ();
- 默认先访问父类中无参的构造方法,再执行自己。
- 如果想要方法文父类有参构造,必须手动书写。
This、super 使用总结
This:理解为一个变量,表示当前方法调用者的地址值:
他是一个局部变量,然后再方法调用的时候会产生值
类似 super()
相关文章:

继承的笔记
继承 对象代表什么, 就得封装对应的数据, 并提供数据对应的行为 对于两种不同的类, 但是具有很多共同的属性的时候我们就想着用继承, 我们可以将共同的属性放置在一个类中, 然后, 只需要新建两个类, 继承共有的类, 然后单独写自己的属性特点 继承类 Java 中提供了一个关键字…...
Android7.1 ROOT权限的获取
修改文件: system/extras/su/su.c system/core/include/private/android_filesystem_config.h system/core/libcutils/fs_config.c frameworks/base/core/jni/com_android_internal_os_Zygote.cpp frameworks/base/cmds/app_process/app_main.cpp device/qcom…...

几个好用的数据标注软件labelme、CVAT及LabelImage
我们使用yolov3、yolov4、yolov5、yolov8等训练自己的权重时,需要有大量标注好的数据集,这里有几个好用的数据标注软件labelme、CVAT及LabelImage 一、labelme labelme:https://github.com/wkentaro/labelme 这个软件用的比较多,…...

VSCode学习笔记一:添加代码模板
一目了然 1 简述2 设置模板3 Global Snippets file示例 1 简述 问:为什么要设置代码模板? 答:编程语言是有个性的,不同语言的演讲风格是不一样的。 旁白:我不懂?! 问:为什么要设置…...

Linux下修改jar包中的配置文件application.conf
文件位置 jar包文件工程目录 打包后解压jar包目录 提取和上传 jar tf XXX.jar # 获取包内文件 application.conf是jar包的配置文件,如果修改需要 提取文件 jar xf my-app.jar application.conf 修改后上传文件 jar uf my-app.jar application.conf...

【python绘图—colorbar操作学习】
文章目录 Colorbar的作用Colorbar的操作截取cmap拼接cmap双刻度列colorbar 引用 Colorbar的作用 Colorbar(颜色条)在绘图中的作用非常重要,它主要用于以下几个方面: 表示数据范围: Colorbar可以显示图中的颜色映射范围…...

Python+Appium自动化测试-编写自动化脚本
之前已经讲述怎样手动使用appium-desktop启动测试机上的app,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 Python3.7 appium1.18.0 Android手机 今日头条…...

AMEYA360|ROHM罗姆首次推出硅电容器BTD1RVFL系列
全球知名半导体制造商ROHM(总部位于日本京都市)新开发出在智能手机和可穿戴设备等领域应用日益广泛的硅电容器。利用ROHM多年来积累的硅半导体加工技术,新产品同时实现了更小的尺寸和更高的性能。 随着智能手机等应用的功能增加和性能提升,业界对于支持更…...
Linux发散小知识
linux/unix哲学:KISS Keep It Simple and Stuid。 "提供一套机制,而不是策略",“万般皆文本,四处用脚本” unix的数据流追求简单化、通用性、可视性、设备无关,二进制肯定无法做到这些,因此文本…...

GTS 中testPeakPssOfAllApps fail 详解
0. 前言 GTS 在测试 case armeabi-v7a GtsMemoryHostTestCases 的时候出现下面异常,本文总结一下。 com.google.android.memory.gts.AllAppsMemoryHostTest#testPeakPssOfAllApps 1. error log 09-14 10:16:34 I/TestFailureListener: FailureListener.testFaile…...
linux查看远程仓库的分支
在 Linux 终端中,您可以使用 git 命令来查看远程仓库的分支。git 是版本控制系统,用于管理代码的版本和协作开发。以下是查看远程仓库分支的方法: 查看所有远程分支: git ls-remote <remote_repository_url> 这个命令会显示…...

【Linux常用命令】
编程不良人 Linux 笔记 一、防火墙相关 1、查看防火墙状态 systemctl status flrewalld2、如果防火墙是开启状态的,需要关闭 systemctl stop firewalld3、永久行关闭操作(禁止开机自启动) 因为防火默认是开启状态的,如果只是手…...
QString类与整型,浮点数互转
本文介绍QString类与整型,浮点数之间的相互转换。 1.QString类转整型 QString类转整型(包含2进制,8进制,16进制),可以使用QString的toInt()函数。 QString str("1234"); bool bOK false; int…...

基于STM32F407ZET6的环境温湿度监控系统(粤嵌GEC-M4)
注意使用事项: 开发板如下 由于外部晶振是8M,需要修改setup和stm32f4头文件的晶振值。 操作如下: system_stm32f4xx.c的254行 #define PLL_M 8stm32f4xx.h的127行 #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the Ex…...

2023年五一杯数学建模A题无人机定点投放问题求解全过程论文及程序
2023年五一杯数学建模 A题 无人机定点投放问题 原题再现: 随着科学技术的不断发展,无人机在许多领域都有着广泛的应用。对于空中执行定点投放任务的无人机,其投放精度不仅依赖于无人机的操作技术,而且还与无人机执行任务时所处状…...

Redis 7 第九讲 微服务集成Redis 应用篇
Jedis 理论 Jedis是redis的java版本的客户端实现,使用Jedis提供的Java API对Redis进行操作,是Redis官方推崇的方式;并且,使用Jedis提供的对Redis的支持也最为灵活、全面;不足之处,就是编码复杂度较高。 …...

c++day7
仿照vector手动实现自己的myVector,最主要实现二倍扩容功能 #include <iostream>using namespace std; template <typename T> class Myvector { private:T *start;//起始指针T *end;//数组末尾指针T *last;//数组有效长度的尾指针 public://定义无参构…...
C++学习概述
1.c 为啥需要头文件 如果您刚开始使用 C,您可能想知道为什么C需要 #include 头文件,以及为什么一个程序要拥有多个 .cpp 文件。 原因很简单: a) 减少编译时间 随着程序的增长,您的代码也会增长,如果所有内容都在一个…...
关系型数据库和非关系型数据库
关系型数据库和非关系型数据库 关系型数据库非关系型数据库 非关系型数据库和关系型数据库是两种不同类型的数据库管理系统,它们用于存储和管理数据,但在数据组织和处理方式上有一些重要的区别。 关系型数据库 1.结构化数据存储:关系型数据库…...

基于SSM的快餐店点餐服务系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...