JavaSE:继承 多态

news2024/12/27 12:25:20

继承

继承的本质

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

使用场景:代码复用

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

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.coloradmin.cn/o/1605081.html

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

相关文章

多个微信如何自动化管理?

01 批量自动加好友 微信私域管理系统可以批量导入客户号码或微信号&#xff0c;设置多个号同步加好友任务。这一功能极大地减轻了手动添加好友的繁琐操作&#xff0c;避免因操作过多导致频繁而封号。 02 机器人自动回复 在系统上可以设置自动通过好友、通过好友后自动回复以…

物联网在工业中的应用是什么?——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网在工业中的应用已经日益广泛&#xff0c;它为企业带来了前所未有的机会和挑战。物联网技术通过连接各种设备和系统&#xff0c;实现了数据的实时采集、分析和优化&#xff0c;从而提高了生产效率、降低了成本并提升了企业的竞争力。…

Nextjs使用recoil遇到的报错

Expectation Violation: Duplicate atom key “userInfo”. This is a FATAL ERROR in production. But it is safe to ignore this warning if it occurred because of hot module replacement. 可能在服务端和客户端都运行导致重复声明 可在 _app.tsx / _app.jsx 入口页 将r…

预选小标题

海岛,广东小岛 汕头 南澳岛(推荐) 距离东凤镇 500公里 珠海 需要坐船出海, 到达珠海码头 75公里 东澳岛, 桂山岛 海岛基本都差不多 阳江市海陵岛 可以赶海 距离东凤镇 240公里 江门 川岛, 下川岛 可下海 距离东凤镇 150公里 山林丹霞地貌 韶关 丹霞景区, 韶石景区,巴寨景…

【ZYNQ】PS和PL数据交互丨AXI总线(主机模块RTL代码实现)

文章目录 一、PS-PL数据交互桥梁&#xff1a;AXI总线1.1 AXI总线和AXI4总线协议1.2 PS-PL数据传输的主要场景1.2.1 PL通过AXI_HP操作DDR3 Controller读写DDR31.2.2 PS作主机使用GP接口传输数据 1.3 AXI端口带宽理论1.4 AXI 总线的读写分离机制1.5 握手机制1.6 AXI_Lite总线1.7 …

C++类和对象第二弹(构造,析构和拷贝构造函数)

目录 前言 1. 类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3. 析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 总结 前言 本文主要讲解类中构造函数、析构函数和拷贝构造函数。关于这三个类中默认成员函数的知识点很多&#xff0c;有许多…

【C++20】学习笔记:在事件驱动使用携程

2021年文章:比物理线程都好用的C++20的协程,在事件驱动代码中的应用解析 大神给出了可以用的例子:例子代码执行 源码 //https://bbs.huaweicloud.com/blogs/266537 #include <iostream> #include <vector>//这只是一个极简的模型示例,真实的代码要远比它复杂得…

基于工程车辆/物流车辆/消防车辆远程通信的车队管理解决方案

交通运输对全球经济至关重要&#xff0c;特别是长途卡车在现今的供应链中发挥着重要作用。目前&#xff0c;货运物流面临许多挑战&#xff0c;包括不断上升的燃料价格和排放污染等问题。由于重型卡车的尺寸和载重量大&#xff0c;这意味着它们产生更多的二氧化碳排放足迹。在国…

【CDN产品测评-笔记】探索云服务中的安全和性能增强功能

【CDN产品测评-笔记】探索云服务中的安全和性能增强功能 写在最前面1. DNS管理&#xff1a;核心的域名服务功能2. DDoS防护&#xff1a;构筑坚不可摧的防线3. Web防护&#xff1a;智能化的网络攻击防御4. BOT管理&#xff1a;精准识别与流量控制5. 加速服务&#xff1a;提升全球…

航芯通用MCU技术常见问题 | F4专题

日常工作中&#xff0c;我们的销售或技术工程师经常会收到来自用户的问题&#xff0c;其中一些问题是比较常见的&#xff0c;所以为满足日常用户对航芯产品使用及服务的了解&#xff0c;航芯特此推出“通用MCU技术常见问题”专题&#xff0c;分为F0专题及F4专题&#xff0c;欢迎…

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机 文章目录 Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机1.安装virtualbox2.下载Window.iso文件并载入3.问题解决3.1 Kernel driver not installed (rc-1908)3.2 VT-x is disabled in the BIOS for all CPU modes 4.安装Wi…

取模学习之Image2Lcd

使用软件Image2Lcd V0.4 1.&#xff1a;打开图片&#xff0c;图片格式可选如下图&#xff0c;本文使用的.jpg格式 转换后数组例子&#xff08;数组头数据占前8字节&#xff09;&#xff1a; 2.&#xff1a;扫描模式 由第1个字节低四位配置 &#xff08;1&#xff09;水平扫描 …

Linux 1.文件编程(dup、dup2)

重定向 重定向是什么&#xff1f;dupdup2 重定向是什么&#xff1f; 进程在最开始运行的时候&#xff0c;首先打开了三个文件&#xff0c;分别是标准输入流、标准输出流、标准错误输出流。证明的时候我是把标准输出留给关闭了&#xff0c;然后紧接着创建的文件就会占用已关闭的…

音频调试(2)

前言&#xff1a; 大家好&#xff0c;今天继续分享记录一下最近的音频调试心得&#xff01;同时这个过程中&#xff0c;也有朋友过来交流音频的问题&#xff0c;通过交流&#xff0c;也是学习到了新东西&#xff01; 视频和音频复合推流&#xff1a; 在上一篇文章里面有提到fdk…

Python100个库分享第22个—xlwings的写入与读取 (办公篇)

目录 专栏导读库的介绍库的安装基础用法1&#xff1a;打开并读取 Excel 文件基础用法2&#xff1a;读取某一行 &#xff08;注意点&#xff1a;expand(‘right’)&#xff09;基础用法3&#xff1a;读取某一列 &#xff08;注意点&#xff1a;expand(‘down’)&#xff09;基础…

百度文心一言与谷歌Gemini的对比

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 本文从多角度将百度文心一言与谷歌Gemini进行对比。因为不同评测基准的侧重点和难度可能有所不同&#xff0c;所以本文涉及到的评测结果仅供参考。Gemini和文心一言都是非常…

Compose 基础组件

文章目录 Compose 基础组件Modifier 修饰符Scaffold 脚手架 Compose 基础组件 Modifier 修饰符 在传统视图体系中&#xff0c;使用XML文件描述组件的样式&#xff0c;而在Compose中使用Modifier&#xff0c;每个基础的Composable组件都有一个modifier参数&#xff0c;通过Mod…

ObjectMapper解析JSON数据

ObjectMapper的作用 1.背景&#xff1a; 当我们调用API的时候捕获的数据&#xff0c;往往需要结合文档所定义的类进行转换&#xff0c;也就是Java对象与JSON 字符串之间的转换 2.作用&#xff1a; ObjectMapper 是 Jackson 库中的一个关键类&#xff0c;它的作用是将 JSON 数据…

时序分解 | Matlab实现WOA-VMD鲸鱼算法WOA优化VMD变分模态分解

时序分解 | Matlab实现WOA-VMD鲸鱼算法WOA优化VMD变分模态分解 目录 时序分解 | Matlab实现WOA-VMD鲸鱼算法WOA优化VMD变分模态分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现WOA-VMD鲸鱼算法WOA优化VMD变分模态分解&#xff08;完整源码和数据) 1.利用鲸…

WT3000T8-TTS语音合成芯片及应用场景介绍

一、TTS语音合成芯片简述 TTS语音合成芯片是一种能够将文本信息转化为自然语音的专用芯片。它通过内置的语音合成算法和音频处理单元&#xff0c;实现了文本到语音的高效转换&#xff0c;为各种智能设备提供了丰富的语音交互功能。 二、TTS语音合成开发背景 TTS&#xff08;文字…