当前位置:网站首页>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 真实类型
边栏推荐
猜你喜欢
IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
Flink运行时架构 完整使用 (第四章)
mySQL增删改查进阶
DAY26: GetShell project
【OAuth2】二十、OAuth2扩展协议 PKCE
ARM Architecture 3: Addressing and Exception Handling of ARM Instructions
DAY26:GetShell专题
【微服务架构】为故障设计微服务架构
10 【异步组件 组合式函数(hooks)】
JWT: To own me is to have power
随机推荐
MySQL的用户临时表与内部临时表
ARM结构体系3:ARM指令的寻址和异常中断处理
乐观锁与悲观锁
Nvidia's gaming graphics card revenue plummets / Google data center explosion injures 3 people / iPhone battery percentage returns... More news today is here...
DAY25:逻辑漏洞复现
How to understand the difference between BIO, NIO, and AIO
Fourier series and Fourier transform
Basic concepts of concurrency, operations, containers
[Metaverse Omi Says] See how UCOUCO integrates performance art into the Metaverse
浅谈DAO+DeFi+NFT模式开发代码技术方案丨链游元宇宙NFT盲盒项目技术开发逻辑(源码程序)
【 WeChat applet 】 read page navigation
爬虫-爬取某小说网站
第三章 搜索与图论(三)
封装和使用通用的工具栏组件
刷题工具h
不要把公司当成家,被通知裁员时会变得不幸...
【元宇宙欧米说】听兔迷兔如何从虚拟到现实创造潮玩新时代
微信小程序--》小程序生命周期和WXS使用
[Data Architecture] Distributed Data Grid as a Solution for Centralized Data Monolith
mysql千万级别数据库优化