当前位置:网站首页>CSDN21天学习挑战赛——多态(05)
CSDN21天学习挑战赛——多态(05)
2022-08-10 09:26:00 【二哈喇子!】
活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
什么是多态?
指对象可以有多种形态。
多态的常见形式
父类类型 对象名称 = new 子类构造器
多态中成员访问特点
方法调用:编译看左边,运行看右边。
变量调用:编译看左边,运行也看左边。(注意)
多态的前提
有继承/实现关系;有父类引用指向子类对象;有方法重写(多态侧重行为多态)。
优势
在多态形式下,右边对象可以实现解耦合,便于扩展和维护。
Animal a = new Dog();
a.run(); // 后续业务行为随对象而变,后续代码无需修改
定义方法的时候,使用父类型作为参数,该方法就可以接收这父类的一切子类对象,体现出多态的扩展性与便利。
多态下会产生的一个问题:
多态下不能使用子类的独有功能
自动类型转换(从子到父):
Animal c = new Cat();
强制类型转换(从父到子)
从父到子( 必须进行强制类型转换,否则报错): 子类 对象变量 = (子类)父类类型的变量
作用:可以解决多态下的劣势,可以实现调用子类独有的功能。
注意: 有继承/实现关系的类就可以在编译阶段进行强制类型转换;但是,如果转型后的类型和对象真实对象的类型不是同一种类型,那么在运行代码时,就会出现ClassCastException
Animal c = new Cat();
Dog d = (Dog)c; // 出现异常 ClassCastException
Java建议强转转换前使用instanceof判断当前对象的真实类型,再进行强制转换
变量名 instanceof 真实类型
判断关键字左边的变量指向的对象的真实类型,是否是右边的类型或者是其子类类型,是则返回true,反之。
总结
1、引用数据类型的类型转换,有几种方式?
自动类型转换、强制类型转换。
2、强制类型转换能解决什么问题?
可以转换成真正的子类类型,从而调用子类独有功能。
3、强制类型转换需要注意什么?
有继承关系/实现的2个类型就可以进行强制转换,编译无问题。
运行时,如果发现强制转换后的类型不是对象真实类型则报错(ClassCastException)
4、强制类型转换前最好做什么事情,如何进行?
使用instanceof判断当前对象的真实类型,再进行强制转换
对象变量名 instanceof 真实类型
边栏推荐
- "Microservice Architecture" Arrangement and Choreography - Different Models for Making Systems Work Together
- Vivado时序约束中Tcl命令的对象及属性
- 郭晶晶家的象棋私教,好家伙是个机器人
- 关于镜像源的一些记录
- 以技术御风险,护航云原生 | 同创永益 X 博云举办产品联合发布会
- 【系统设计】S3 对象存储
- [OAuth2] 20. OAuth2 Extended Protocol PKCE
- 【OAuth2】十九、OpenID Connect 动态客户端注册
- [Metaverse Omi Says] See how UCOUCO integrates performance art into the Metaverse
- 【API Management】What is API Management and why is it important?
猜你喜欢

Defending risks with technology and escorting cloud native | Tongchuang Yongyi X Boyun held a joint product launch conference

Flink运行时架构 完整使用 (第四章)

JVM探究

DAY26:GetShell专题

【微信小程序】一文读懂页面导航

【 WeChat applet 】 read page navigation

ARM体系结构2:处理器内核和汇编指令集

2022-08-09 第六小组 瞒春 学习笔记

【元宇宙欧米说】听兔迷兔如何从虚拟到现实创造潮玩新时代

Vivado时序约束中Tcl命令的对象及属性
随机推荐
09 【Attributes继承 provide与inject】
地平线:面向规模化量产的智能驾驶系统和软件开发
mySQL add, delete, modify and check advanced
【数据架构】分布式数据网格作为集中式数据单体的解决方案
【分布式】资源与事务:可观测性的基本二重性
微信小程序--》小程序生命周期和WXS使用
Basic concepts, structures, and classes of thread pools
用高质量图像标注数据加速AI商业化落地
JWT: To own me is to have power
【系统设计】S3 对象存储
数据库注入提权总结(一)
设计分享|基于单片机的从左到右流水灯
06 【生命周期 模板引用】
[Data Architecture] Distributed Data Grid as a Solution for Centralized Data Monolith
IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
10 【异步组件 组合式函数(hooks)】
【OAuth2】二十、OAuth2扩展协议 PKCE
How to use [jmeter regular expression extractor] to solve the problem of returning the value as a parameter
BUUCTF problem solving PWN 】 【 record (4-6 pages continuously updated)
【API Management】What is API Management and why is it important?