当前位置: 首页 > article >正文

【Java学习】多态

面向对象系列三

一、方法相同

二、方法重写

1.概念

2.条件

三、向上转型

1.概念

2.方式

四、方法绑定

五、多态


一、方法相同

方法相同要求方法名相同、参数列表相同、返回值类型相同(与两方法修饰的访问限定符相不相同、静态非静态状态相不相同无关),而且在子类与父类相同的方法中,子类那边方法的访问权限必须大于等于父类那边方法的访问权限

二、方法重写

1.概念

重写是由子类类变量引用赋给父类类变量引用后父类类变量引用里对原子类类变量里重写方法的选择去调用


2.条件

父类与子类中相同的方法符合存在的情况下,如果子类的方法是非静态的,再加上父类的方法符合以下条件则能实现子类对父类方法的重写:

  • 父类的那个要被重写的方法必须也是非静态的
  • 并且在父类的非静态方法中构造方法不能被重写

父类的构造方法的方法名必须与父类类名相同,子类的构造方法的方法名必须与子类类名相同,在子类那边的构造方法要重写必须方法名相同要与父类类名相同,在子类里不能实现它的这个构造方法,所以父类的构造方法不能重写

  • 父类那个要被重写的方法必须是要被直接对应的,不能被private修饰被包装
  • 父类那个要被重写的方法不能被定义为确定最终执行方法,不能被final修饰
  • 父类那个要被重写方法的返回类型要与子类重写方法的返回类型相同也可以呈继承关系的不同

三、向上转型

1.概念

子类类变量引用转类型为父类类变量引用就是向上转型

子类的似复刻变量的引用用父类的类变量来接时,父类类变量引用接收后所指向的似复刻变量变为了用父类类变量创的似复刻变量,如果子类那边有对应实现的重写方法,路径信息上还有多加子类类变量的重写方法路径信息在调用父类类变量的那个被重写的方法时会转为访问调用对应的子类重写的方法,除此之外子类类变量创的其它剩余下的似复刻变量部分引用的权限没有消失而是被隐藏,可通过对此父类类变量引用类型强转回子类类变量引用类型获取回子类类变量那边的被隐藏的权限,获取回子类类变量原本的全部访问权限(隐藏式父类类变量引用转回其子类类变量引用即向下转型)


2.方式

子类类变量引用是可类型安全地转为父类类变量引用的,此转类型不会丢失数据,是安全允许的可直接接转来转类型的,有赋值接转形参接转返回值类型接转

(向上转型是收敛式隐藏的减法减得多减得少都不会出什么事,而向下转型是加法,如果加的加上原来不属于它的就出错了,所以向下转型是不安全的,类型转换需要强转)

  • 似复刻变量A instanceof 似复刻变量B ,判断似复刻变量A是否是由似复刻变量B向上转型而来的

父类的构造方法里发生形参接转: 

从子类里调用父类的构造方法时,实质上发生了形参接转,从子类里将子类的似复刻变量传到父类构造方法的父类的似复刻变量形参上,发生了向上转型,此时在父类的构造方法里如果有对应在子类被重写的方法,调用时对应去执行子类那边的重写方法,子类的重写方法里可能有对自己静态成员变量、复制变量的使用,但此时因为子类也就只执行了子类的静态代码块,还未进行就地初始化、实例代码块执行、构造方法执行,子类似复刻变量里的复制变量、子类类变量里的静态变量都还是初始值0,极有可能出错,所以在父类的构造方法里的非静态方法要注意是否有被重写

四、方法绑定

绑定即对方法多个选择的确定

  • 调用重载的方法时,方法名相同的方法有多个,在编译时根据传参情况确定下要调用的方法,即静态绑定
  • 调用重写的方法时,要调用的方法子类与父类都有且相同,在执行时根据重写的对象确定要执行的那个方法,即动态绑定

一个方法先经静态绑定后经动态绑定,最终确定要执行的方法

方法重载在同一个类中实现,方法重写在不同类即父类与子类中实现

五、多态

一个方法不同对象截然不同调用效果,这个父类方法是多态的能够实现根据对象自动选择调用对应方法,即一个父类方法不同子类对象自动对应上各自子类方法解决方法调用时选择哪个方法调用的选择问题,全部直接对它调用,不用自己判断选择调用了

相关文章:

【Java学习】多态

面向对象系列三 一、方法相同 二、方法重写 1.概念 2.条件 三、向上转型 1.概念 2.方式 四、方法绑定 五、多态 一、方法相同 方法相同要求方法名相同、参数列表相同、返回值类型相同(与两方法修饰的访问限定符相不相同、静态非静态状态相不相同无关),而且…...

单片机 Bootloade与二进制文件的生成

单片机的 Bootloader 是一种特殊的程序,负责在单片机上电后初始化硬件、更新用户应用程序(固件),并将控制权移交给用户程序。以下是其运行机制和关键流程的详细说明: 1、单片机 Bootloader 的核心作用 固件更新&…...

MySQL数据库(3)—— 表操作

目录 一,创建表 1.1 创建表的SQL 1.2 演示 二,查看表 三,修改表 四,删除表 常用的表操作会涉及到两种SWL语句 DDL(Data Definition Language)数据定义语言:建表、改表、删表等&#xff0…...

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…...

七星棋牌源码高阶技术指南:6端互通、200+子游戏玩法深度剖析与企业级搭建实战(完全开源)

在棋牌游戏行业高速发展的今天,如何构建一个具备高并发、强稳定性与多功能支持的棋牌游戏系统成为众多开发者和运营团队关注的焦点。七星棋牌全开源修复版源码 凭借其 六端互通、200子游戏玩法、多省区本地化支持,以及 乐豆系统、防沉迷、比赛场、AI智能…...

【深度学习在图像配准中的应用与挑战】

图像配准在深度学习中的解决方案越来越多,尤其是通过卷积神经网络(CNN)和生成对抗网络(GAN)等方法,可以显著提升图像配准的效果,尤其是在处理复杂的非刚性变换和大范围的图像差异时。 1. 基于深…...

HarmonyOS 开发套件 介绍 ——上篇

HarmonyOS 开发套件 介绍 ——上篇 在当今科技飞速发展的时代,操作系统作为智能设备的核心,其重要性不言而喻。而HarmonyOS,作为华为推出的全新操作系统,正以其独特的魅力和强大的功能,吸引着越来越多的开发者和用户的…...

跳跃游戏(力扣55)

题目问是否可以跳到数组最后一个下标,有的同学可能会思考如何模拟跳跃这个操作,但这是比较困难的,很容易把自己绕进去。可以换一种思路,我们不需要知道具体是如何跳到最后一个下标的,而是找到最大的跳跃范围。如果该跳…...

网络空间安全(1)web应用程序的发展历程

前言 Web应用程序的发展历程是一部技术创新与社会变革交织的长卷,从简单的文档共享系统到如今复杂、交互式、数据驱动的平台,经历了多个重要阶段。 一、起源与初期发展(1989-1995年) Web的诞生: 1989年,欧洲…...

机器学习 - 衡量模型的特性

最近我们陆续学习了机器学习的一些基础知识,本文来理解一下衡量机器学习模型的特性。了解机器学习模型的特性不仅有助于在理论上理解不同算法的工作原理,也能在实践中指导模型选择、参数调优、结果解释和系统部署,最终提高模型的实际应用效果…...

JUC并发—9.并发安全集合三

大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 1.并发安全的数组列表CopyOnWriteArrayList …...

Baklib云智协同:数字资产赋能企业效能跃升

内容概要 在数字化转型加速的背景下,Baklib通过构建智能化的知识中台架构,为企业打造了贯穿知识采集、整合、应用的全链路解决方案。该平台以动态知识图谱为核心技术底座,支持文档、音视频、代码等20余种格式的数字资产全生命周期管理&#…...

wordpress adrotate插件 文件上传漏洞

当你爆破进wordpress后台但权限不是管理员的时&#xff0c;如果你有adrotate插件操作权限可以用adrotate的文件上传功能get webshell 该漏洞需要AdRotate版本 < 5.13.3 第一步按顺序点击上传文件 在这里文件一定要压缩成zip格式&#xff0c;上传的时候也是上传这个zip 上…...

iframe 高さ 自動調整

iframeに異なるドメイン&#xff08;クロスドメイン&#xff09;のコンテンツを読み込んで高さを自動調節する方法 - みのるの備忘録 wordpress (親) 側の設定 <apex:iframe id"iframe" src"{!IF(isURL,Url, URLFOR($Resource.test))}" scrolling"…...

Apache Logic4j 库反序列化漏洞复现与深度剖析

前言 在渗透测试领域&#xff0c;反序列化漏洞一直是安全研究人员和攻击者关注的焦点。今天&#xff0c;我们将深入探讨 Apache Logic4j 库中的反序列化漏洞&#xff0c;详细了解其原理&#xff0c;并进行完整的复现演示。 一、漏洞原理 Apache Logic4j 库在处理对象的反序列…...

Python爬虫入门到精通:从零开始的数据采集之旅

一、网络世界的"小蜘蛛":什么是爬虫? 想象一下,你是一只勤劳的小蜘蛛,每天在互联网这张巨大的网上爬来爬去。你不需要自己织网,只需要顺着别人织好的网络路径,把有价值的信息收集到自己的小篮子里。这就是爬虫最形象的比喻——一个自动化的信息采集程序。 Py…...

《Operating System Concepts》阅读笔记:p50-p61

《Operating System Concepts》学习第 9 天&#xff0c;p50-p61 总结&#xff0c;总计 12 页。 一、技术总结 1.system call (1) 定义 The primary interface between processes and the operating system, providing a means to invoke services made available by the o…...

Transformer解析——(四)Decoder

本系列已完结&#xff0c;全部文章地址为&#xff1a; Transformer解析——&#xff08;一&#xff09;概述-CSDN博客 Transformer解析——&#xff08;二&#xff09;Attention注意力机制-CSDN博客 Transformer解析——&#xff08;三&#xff09;Encoder-CSDN博客 Transforme…...

Unity之Serialized序列化:从原理到实践

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之Serialized序列化&#xff1a;从原理到实践 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心…...

毕业项目推荐:基于yolov8/yolov5/yolo11的番茄成熟度检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...

Blaze RangePartitioning 算子Native实现全解析

引言&#xff1a;本文将全面且深入地解析Blaze RangePartitioning算子的Native实现过程。相较于原生Spark&#xff0c;RangePartitioning的Native实现在执行时间上达到了30%的显著下降&#xff0c;同时在资源开销方面节省了高达76%。这一改进大幅降低了运行成本&#xff0c;展现…...

么是静态住宅IP,跨境电商为什么需要静态住宅IP

静态住宅IP是指直接分配给一台属于私人住宅网络的设备的固定IP地址&#xff0c;这种地址不会频繁更改。它们作为代理IP&#xff0c;使使用者能够通过这些代理服务器进行网络访问&#xff0c;而对外显示的则是该住宅的IP地址。由于这些IP地址属于真实的住宅或个人&#xff0c;并…...

1、Window Android 13模拟器 将编译的映像文件导入Android Studio

1、环境准备 编译环境&#xff1a;Ubuntu-18.04.5编译版本&#xff1a;android13-release下载地址&#xff1a;清华大学开源软件镜像站AOSP # 下载repo # 同步代码&#xff1a;repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android13-r…...

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程&#xff1b;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…...

基于ffmpeg+openGL ES实现的视频编辑工具-opengl相关逻辑(五)

在我们的项目中,OpenGL ES 扮演着至关重要的角色,其主要功能是获取图像数据,经过一系列修饰后将处理结果展示到屏幕上,以此实现各种丰富多样的视觉效果。为了让大家更好地理解后续知识,本文将详细介绍 OpenGL 相关代码。需要注意的是,当前方案将对 OpenGL 的所有操作都集…...

QUdpSocket的readyRead信号只触发一次

问题 QUdpSocket的readyRead信号只触发一次。 原因 on_readyRead槽函数里必须读出现有数据后&#xff0c;才能触发新的事件。 解决办法 在on_readyRead槽函数里取出数据。 void MainWindow::on_readyRead() {qDebug() << "on_readyRead in";while (m_udp…...

【数据库系统概论】第第12章 并发控制

12.1 并发控制概述 并发控制是指数据库管理系统&#xff08;DBMS&#xff09;通过控制多个事务同时执行&#xff0c;保证数据的一致性和隔离性&#xff0c;避免事务间的相互干扰。 事务串行执行不能充分利用系统资源 并发执行的优点&#xff1a;能够减少处理机的空闲 时间&a…...

HTML应用指南:利用GET请求获取全国泸溪河门店位置信息

随着新零售业态的快速发展,门店位置信息的获取变得越来越重要。作为新兴烘焙品牌之一,泸溪河自2013年在南京创立以来,一直坚持“健康美味,香飘世界”的企业使命,以匠人精神打造新中式糕点。为了更好地理解和利用这些数据,本篇文章将深入探讨GET请求的实际应用,并展示如何…...

tg 2025 最新免费社工库机器人 已验证

最后验证时间&#xff1a;2025-01-17 AI社工库 t.me/AI_SGKBOT?s… X-ray社工库 t.me/Zonesgk_bot… 狗狗免费个户机器人 t.me/gougou88_bo… 免费个户机器人 t.me/SGKQMS_bot?… solo社工库 t.me/abababnbot?… 情报局社工库 t.me/qbjSGKxuanw… space社工库 …...

基于 JavaWeb 的 Spring Boot 调查问卷管理系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...