JavaSE:继承 多态

继承

继承的本质

子类能够使用父类的方法和变量

使用场景:代码复用

在一个类中实现了一个很复杂的方法,给一个新类重新实现这个方法,我们直接继承即可

public class Student {public String sno;public void study() {System.out.println(sno + "学生应该努力学习!");}
}class XiaoMing extends Student {}class XiaoHong extends Student {}class Test {public static void main(String[] args) {XiaoMing xiaoMing = new XiaoMing();XiaoHong xiaoHong = new XiaoHong();xiaoMing.sno = "123";xiaoHong.sno = "456";xiaoMing.study();xiaoHong.study();}
}

重点:继承的内存图

xiaoMing对象和xiaoming对象,分别对应一个匿名的Student对象

加载XiaoMing类之前,先扫描再加载,扫描到有父类,就先加载父类

创建好的父类对象,由子类的对象的super指针指向匿名的父类对象

方法重载和方法重写

方法重载

方法重载发生在同一个类当中,方法的重载要求:

  1. 方法名相同(修饰符可以不同,方法返回类型+方法名必须相同)
  2. 参数列表不同

参数列表不同,主要分为以下情况:

  1. 参数列表数量不同
  2. 参数列表的数量相同,类型不同
public class Student {public String sno;public void study() {System.out.println(sno + "学生应该努力学习!");}public void study(String sno){this.sno = sno;}public void study(String sno){this.sno = sno;}
}

方法重写(重点)

发生在父子类当中,子类可以重写父类的方法。

重写父类的方法,要求:

  1. 重写父类的方法的实现逻辑
  2. 方法名,参数列表必须相同
  3. 返回值类型<=父类
  4. 抛出异常<=父类

子类对象调用重写的方法,优先调用自己的,自己没有才会调用父类的

super关键字

  1. 在子类方法当中调用父类的方法
  2. 调用父类的构造器,只能在子类构造器的第一行使用

继承的层次

Java只支持单继承,C++支持多继承

一个父类对应多个继承的子类,是合法的

但是一个子类有多个父类,是非法的

大白话:一个父类可以有多个子类,一个子类只能有一个父类

向上转型

在这里插入图片描述
在这里插入图片描述

假设有一个方法,参数是A类的对象,那么B,C,D类的对象都是可以的,这就是向上转型

转型时,遵循就近原则,a方法参数是B类对象,b方法参数是A类对象,现在传入一个C类对象作为参数

a方法执行,b方法不执行

继承的内存图(非常重要)

建议看看这篇博客,讲的非常清楚

java 继承关系的内存图解 (通俗易懂)_java继承的内存模型

只有明白了继承的内存图,后面多态才能理解

多态

本质:父类引用,指向子类对象

在这里插入图片描述

方法与变量的使用

多态创建的父类引用的可能会遇到的两种情况:

非重写的成员方法+成员变量:看父类,多态的父类对象不能执行子类的非重写方法,也不能访问子类的变量(具有父类对象的形态

重写的成员方法:看子类(因为子类的方法把父类的方法覆盖掉了),多态的父类对象只能执行子类的重写的方法,自己的方法被覆盖(具有子类对象的形态

同时拥有两种形态,所以叫多态

多态的内存图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Spring Boot 中Mybatis使用Like的使用方式和注意点

说明 模糊查询在项目中还是经常使用的&#xff0c;本文就简单整理Mybatis中使用Like进行模糊查询的几种写法以及一些常见的问题。 使用Springboot简单配置一下Mybatis&#xff0c;然后进行说明。Springboot集成Mybatis这里就不做介绍了&#xff0c;这里我们主要介绍一下在mybat…

《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)

1.简介 上一篇宏哥用PageFactory实现了POM&#xff0c;宏哥再介绍一下如果不用PageFactory如何实现POM。 2.项目实战 在这里宏哥以百度首页登录的例子&#xff0c;如果用POM实现&#xff0c;在测试脚本中实际代码就几行。 2.1代码设计 1.先新建一个pageObjects包&#xff…

算法打卡day38

今日任务&#xff1a; 1&#xff09;完全背包理论基础(卡码网52. 携带研究材料) 2&#xff09;518.零钱兑换II 3&#xff09;377. 组合总和 Ⅳ 4&#xff09;复习day13 完全背包理论基础(卡码网52. 携带研究材料) 题目链接&#xff1a;52. 携带研究材料&#xff08;第七期模拟…

使用LangChain和GPT-4,创建Pandas DataFrame智能体

大家好&#xff0c;数据分析和数据处理是数据科学领域每天都在进行的基本任务。高效和快速的数据转换对于提取有意义的见解和基于数据做出明智决策至关重要。其中最受欢迎的工具之一是Python库Pandas&#xff0c;它提供了一个功能强大的DataFrame工具&#xff0c;使用灵活直观的…

基于51单片机土壤湿度检测及自动浇花系统

基于51单片机土壤湿度检测及自动浇花 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.LCD1602实时显示湿度、湿度上下限&#xff1b; 2.可用按键设置湿度、湿度上下限&#xff1b; 3.当湿度低于下限…

分类预测 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机数据…

搭建电商供应链需要用到哪些电商接口?||主流电商API接口解说

搭建供应链系统时&#xff0c;您可能需要与电商平台进行集成&#xff0c;以实现订单管理、库存同步、物流跟踪等功能。以下是一些常见的电商接口&#xff0c;可以帮助您构建供应链系统&#xff1a; 1. **淘宝开放平台接口**&#xff1a;淘宝开放平台提供了丰富的接口&#xff…

4399下架了的flash游戏 网盘自提取

下载好游戏后&#xff0c;需要使用flash进行打开&#xff0c;直接拖动游戏文件到flash文件&#xff0c;即可用flash快捷打开。 flash下载 百度网盘链接&#xff1a;https://pan.baidu.com/s/1KUz4ymg0SS7wFGH54hdE3A?pwdnisj 提取码&#xff1a;nisj 一、幻想纹章 不太行了…

Node.JS后端开发笔记整理(简洁版)

前端 1. 开发环境和技术栈 开发工具&#xff1a;Visual Studio CodeNode.js版本&#xff1a;18.19.0&#xff08;建议保持在18&#xff09;包管理器&#xff1a;npm前端框架&#xff1a;Vue3.4脚本语言&#xff1a;TypeScript构建工具&#xff1a;Vite后端框架&#xff1a;Ex…

ubuntu设置扩充swap交换空间

Swap是指Linux系统中的交换分区,类似于Windows的虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存来使用,从而解决内存不足的问题。交换分区,它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行! …

Golang基础-13

Go语言基础 介绍 并发 channel goroutine 互斥锁 读写锁 原子操作 select 超时处理 sync包 runtime包 介绍 本文介绍Go语言中 channel、goroutine、互斥锁、读写锁、原子操作、select、超时处理、sync包、runtime包等相关知识。 并发 进程是是最小的资源管理单元…

异步FIFO约束set_max_delay

1.最大延迟set_max_delay set_max_delay [-datapath_only] -from [ node_list] -to [node_list] delay_value 在Set Max Delay约束中使用-datapath_only选项时&#xff0c;它指示综合工具在优化设计时仅考虑数据通路的延迟&#xff0c;而不考虑控制逻辑的延迟。 关于最大最小…

L1正则化的数学公式

L1正则化是机器学习和统计学中常用的正则化技术&#xff0c;用于控制模型的复杂度并防止过拟合。它们的数学表达如下&#xff1a; L1正则化&#xff08;也称为Lasso正则化&#xff09;&#xff1a;在损失函数中添加模型参数的绝对值之和作为正则化项。其数学公式如下所示&…

利用地图资源工具让Sentinel-2自动生成NDVI\EVI

新版地图资源工具已经能自动计算EVI了&#xff0c;也就是现在工具可以自动计算NDVI、EVI及做哨兵L1C数据的自动预处理&#xff01;只要勾选如下选项后数据下载的同时会自动生成NDVI、EVI&#xff01; 归一化差异植被指数 (NDVI) 由于植被在近红外波段处有较强的反射&#…

Training - PyTorch Lightning 的 Horovod 策略实践 (all_gather)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/137686312 在 PyTorch Lightning 中使用 Horovod 策略&#xff0c;可以在多个 GPU 上并行训练模型。Horovod 是分布式训练框架&#xff…

Oladance、南卡、漫步者开放式耳机好不好用?3大当红明星产品测评PK

​在音频市场中&#xff0c;开放式耳机以其创新设计和卓越听感赢得了一定的关注。然而&#xff0c;也存在一些产品质量和音质不尽人意&#xff0c;甚至可能影响用户听力安全。作为一名专业的音频设备评测师&#xff0c;我建议用户在选择开放式耳机时&#xff0c;应优先选择那些…

《R语言与农业数据统计分析及建模》学习——控制流

1、控制流的概念和作用 控制流是指根据循环或条件来控制程序的执行顺序和逻辑。 2、循环语句 循环语句允许程序重复执行特定的代码块&#xff0c;知道满足特定条件。 在R语言中&#xff0c;常见的循环语句有for、while和repeat。 # for循环用于在已知次数的情况下重复执行代码…

磁盘的管理

会在linux中使用硬盘 分区 格式化&#xff08;重新安装文件系统&#xff09; 挂载 硬盘的分类 1.机械硬盘 2.固态硬盘 硬盘的数据结构 扇区&#xff1a;盘片被分为多个扇形区域&#xff0c;每个扇区存放512字节的 数据 &#xff08;扇区越多容量越大&#xff09; 存放数据的…

2024.4.13 Python 爬虫复习day01

目录 day01_HTTP协议HTML页面web服务器 各类名词解释 URL统一资源定位符 HTTP协议 HTML页面 知识点: 第一个页面 标题标签和图片标签 注册页面 登录页面 WEB服务器 安装fastapi和uvicorn 原始命令方式 镜像源命令方式 工具方式 快速搭建web服务器 知识点: 示例…

openGauss学习笔记-266 openGauss性能调优-TPCC性能调优测试指导-文件系统配置

文章目录 openGauss学习笔记-266 openGauss性能调优-TPCC性能调优测试指导-文件系统配置266.1 查看当前数据盘的文件系统类型266.2 对于需要修改的磁盘&#xff0c;备份所需的数据至其他磁盘或其他服务器266.3 格式化磁盘为xfs文件系统266.4 执行**步骤一** openGauss学习笔记-…