面向对象的特征三:多态性

news2025/4/15 14:38:33

1.多态性的理解:

可以理解为一个事物的多种形态。

2.何为多态性:

对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)

可以直接应用在抽象类和接口上

举例:Person p = new Man(); Object obj = new Date();

3.多态性的使用:虚拟方法调用

有了对象的多态性以后,我们在编译期(在IDEA敲代码时自动编译),只能调用父类中声明的方法(如果调用的方法父类没有,在idea写代码的时候就会报错),但在运行期,我们实际执行的是子类重写父类的方法。

子类中定义了与父类同名同参数的方法,在多态情况下,将此时父类的方法**称为虚拟方法,**父类根据赋给它的不同子类对象,动态调用属于子类的该方法。这样的方法调用在编译期是无法确定的

总结:

  • “看左边”:看的是父类的引用(父类中不具备子类特有的方法)

  • “看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)

  • Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简称:编译时,看左边;运行时,看右边。

  • 在Java中,子类的对象可以替代父类的对象使用

    • 一个变量只能有一种确定的数据类型。
    • 一个引用类型变量可能**指向(引用)**多种不同类型的对象。
    • 在这里插入图片描述
    • Java向上转型与向下转型

4.多态性的使用前提:

① 类的继承关系 ② 方法的重写

5.多态性的应用举例:

class Driver{ 
public void doData(Connection conn){
    //conn = new MySQlConnection(); 或 conn = new OracleConnection();
	//规范的步骤去操作数据 MYSQL、Oracle都实现了这三个方法。Connection接口有规范的步骤,直接调用的是 MYSQL(子类)实现的这几个方法。
   		conn.method1();
		conn.method2();
		conn.method3();
    }
}

6.多态性使用的注意点:

对象的多态性,只适用于方法,不适用于属性(编译和运行都看等号左边),多态性和属性没关系。

面试题:
8.1 谈谈你对多态性的理解?
① 实现代码的通用性。
② Object类中定义的public boolean equals(Object obj){ }
JDBC:使用java程序操作(获取数据库连接、CRUD)数据库(MySQL、Oracle、DB2、SQL Server)
③ 抽象类、接口的使用肯定体现了多态性。(抽象类、接口不能实例化
8.2 多态是编译时行为还是运行时行为? 运行时

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

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

相关文章

场景营销解密:出海品牌在全球市场的差异化策略

品牌出海是企业扩大国际市场份额、实现全球化发展的必经之路。然而,面对激烈的全球竞争和多样化的消费者需求,仅仅依靠传统的广告宣传手段已经无法满足品牌推广的需求。而场景营销则通过创造具有情境感的消费体验,更好地满足了消费者的参与需…

手写分布式事务的一种回滚方案。

1:项目架构 我一个朋友的公司基于实际业务的考虑,选择了多个单体项目来组建成一个分布式系统。(对于目前来说分布式的系统最好采用微服务的架构来实现项目搭建。但基于许多客户只能采用内网的使用,微服务反而会影响项目的复杂度&a…

STM32ADC学习(一)

ADC 模拟/数字转换器 常见ADC类型 并联比较型工作示意图 ADC的特性参数 分辨率:ADC能辨别的最小模拟量,用二进制位数来表示。例如3.3V,12位,能辨别的最小模拟量就是:(3.3/4096)转换时间&#x…

【面试题HTTP中的两种请求方法】GET 和 POST 有什么区别?

GET 和 POST 有什么区别? 1.相同点和最本质的区别1.1 相同点1.2 最本质的区别 2.非本质区别2.1 缓存不同2.2 参数长度限制不同2.3 回退和刷新不同2.4 历史记录不同2.5 书签不同 总结代码示例 GET 和 POST 是 HTTP 请求中最常用的两种请求方法,在日常开发…

练手必备,20个Python实战项目含源代码

“读”代码是不能给你带来任何收益的,正如“读书”一样,如果在读的时候你不琢磨,保管你读完仨月准忘了一大半。真正需要的是去“试”代码,动手去调调代码,改改这改改那,看看把A变成B这个代码的结果会有什么…

c#使用RSA公钥解密

文章目录 前言一、解密函数1、上代码!2、传入的字符串不是base64格式 二、在线验证总结 前言 新项目对接第三方,会把用户信息反正url里面rsa加密传过来,拿到后我解密出用户数据,只给了一个公钥,他们用的java、我用的c…

SpringBoot生成RESTful API文档

由于我一开始学习的SpringBoot是3以上版本,所以我这里用到的也是支持和SpringBoot3能够整合的SpringDoc 这里先说一下,其实SpringDoc就是Swagger3版本,我一开始整合的2版本,比较麻烦况且最后SpringBoot程序都启动不了了&#xff0…

怎样书写专业的落地性能测试计划?

目录 引言 什么是性能测试计划 性能测试计划包含的内容 背景 性能目标 压测范围 启停准则 性能指标 系统架构图 压测前准备 工具准备 数据准备 性能设计 监控设计 项目组织架构 成果输出 项目风险分析 引言 测试计划是软件测试流程中的一个重要步骤,它涉及到对软件…

面向教育行业的MDM(移动设备管理)解决方案

什么是面向教育的MDM 学校和教育机构的移动设备管理 (MDM) 通过将智能设备配置为适合教育用途,支持通过这些设备进行学习。面向教育的 MDM 解决方案允许组织的 IT 管理员或教学人员管理有助于学习的设备,如智能手机、平板电脑、笔…

十三、输出多个立方体并深度测试

第一部分概念 1)由来: 深度测试:opengl的深度测试是指在片段着色器执行之后,利用深度缓冲所保存的深度值决定当前片段是否被丢弃的过程。 深度缓冲区和颜色缓冲区是差不多的,有相同的宽高度,并且一般在窗…

实验篇(7.2) 06. 通过安全隧道访问远端内网服务器 (FortiClient-SSL) ❀ 远程访问

【简介】直接映射服务器到公网,没有验证不安全;通过Web浏览器访问远程内网服务器,有验证也安全,但是支持的协议太少。那有没有即安全,又能支持所有协议的访问方法呢?我们来看看SSL VPN的隧道模式。 实验要求…

智能动环监控系统,实时排查机房安全隐患

动环监控系统又称机房动环、机房动力环境监控系统、动环监控等, 是指对各机房的动力、环境、安防进行集中监测。可对监控系统、设备、安全运行状态进行实时监测、通过统计和处理相关数据,及早发现故障,及时通知运维人员处理;实现机…

员工工作服穿戴AI识别算法 yolov5

员工工作服穿戴AI识别算法是基于yolov5python网络模型人工智能技术,员工工作服穿戴AI识别算法对现场人员的工作服穿戴情况进行实时监控,并对违规情况将自动发出警报。我们选择当下YOLO卷积神经网络YOLOv5来进行火焰识别检测。现版本的YOLOv5每个图像的推…

高并发下缓存失效问题(穿透、雪崩、击穿),以及本地锁、Redis分布锁、Redisson锁、SpringCache使用

高并发下缓存失效问题-穿透、雪崩、击穿 1.缓存穿透2.缓存雪崩3.缓存穿透4.加锁4.1 本地锁4.2 Redis分布锁4.3 RedLock 分布式锁-Redisson**4.3.1 整合Redisson实现分布式锁**4.3.2 分布式锁 1)分布式锁 - - 可重入锁 2)分布式锁 - - 公平锁 3&#xff0…

Spring面试题(基础篇)

目录 一、Spring框架概述 1、什么是Spring? 2、spring优点有哪些? 二、IOC与DI 3、你知道getBean方法的有几种重载方式吗? 4、Spring有几种依赖注入方式? 三、Spring创建对象 5、Spring创建对象有几种方式? 6…

SciencePub学术 | 可再生能源类重点SCIEI征稿中

SciencePub学术刊源推荐: 可再生能源类重点SCI&EI征稿中!2区闭源正刊,进展顺利,稳定检索40年以上。信息如下,录满为止: 一、期刊概况: 可再生能源类重点SCI&EI 【期刊简介】IF:4.0-4.…

Win安装kafka

Win安装kafka 安装zookeeper修改zookeeper 配置文件 安装kafka启动kafka创建topic查看topic命令 用命令发布消息消费命令 安装zookeeper https://zookeeper.apache.org/releases.html 解压到文件夹 同时在解压目录中拆创建 data和 log文件夹 修改zookeeper 配置文件 - 复制 …

小程序多选框问题

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;前端小程序记录错误bug 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 例如&#xff1a;前端循环数组时页面数据无法显示 <checkbox-group bindchange"…

【greenplum 性能优化】greenplum 数据库集群 如何释放占用内存

无意中发现了一个巨牛的人工智能教程&#xff0c;忍不住分享一下给大家。教程不仅是零基础&#xff0c;通俗易懂&#xff0c;而且非常风趣幽默&#xff0c;像看小说一样&#xff01;觉得太牛了&#xff0c;所以分享给大家。点这里可以跳转到教程。人工智能教程 在Greenplum数据…

想从事UE4开发相关工作,C++学到什么程度可以开始学习针对虚幻4的编程开发呢?

想从事UE4开发相关工作&#xff0c;C学到什么程度可以开始学习针对虚幻4的编程开发呢&#xff1f; 想从事UE4开发相关工作&#xff0c;C是一个必须要熟练掌握的语言。在学习C过程中&#xff0c;需要掌握语法、面向对象编程、数据结构和算法等内容&#xff0c;这些都是开发UE4所…