当前位置:网站首页>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 真实类型
边栏推荐
- 1499. The maximum pile.then/deque
- Spotify expresses its architectural design using the C4 model
- [System Design] S3 Object Storage
- iwemeta metaverse: Ali's first COO: how to build a sales force
- 凭借这份阿里架构师的万字面试手册,逆风翻盘,斩获阿里offer
- 【 WeChat applet 】 read page navigation
- mySQL增删改查进阶
- PTA 习题2.1 简单计算器
- 多线程浅谈
- 日期类(暑假每日一题 19)
猜你喜欢

UE4 Sequence添加基础动画效果 (04-在序列中使用粒子效果)

多线程浅谈

win下的开发环境变量记录

浅析JWT安全问题
![[Data Architecture] Distributed Data Grid as a Solution for Centralized Data Monolith](/img/99/b22268e3e47db9e9caad58722e8709.png)
[Data Architecture] Distributed Data Grid as a Solution for Centralized Data Monolith

英伟达游戏显卡营收暴跌/ 谷歌数据中心爆炸致3人受伤/ iPhone电量百分比回归…今日更多新鲜事在此...

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

不想再干会计了,蝶变向新,勇往直前,最后成功通过转行测试实现月薪翻倍~

12 【其它组合式API】

【OAuth2】二十、OAuth2扩展协议 PKCE
随机推荐
J9 digital science: Web 3.0 is about data ownership or decentralized?
Optimistic and pessimistic locking
线程池的基本概念、结构、类
1-31部 1-31套 和硬件工程师90天学习资料及笔记汇总
2022年固定资产管理系统的概况
「微服务架构」编曲与编舞——让系统协同工作的不同模式
JWT: To own me is to have power
Guo Jingjing's personal chess teaching, the good guy is a robot
Question brushing tool h
PTA 习题2.2 数组循环左移
并发的基本概念,操作,容器
06 【生命周期 模板引用】
如何理解BIO、NIO、AIO的区别
郭晶晶家的象棋私教,好家伙是个机器人
在“企业通讯录”的盲区,融云的边界与分寸
04 【计算属性 侦听器】
CAD to WPF: Tips on converting CAD drawing files to WPF vector code files (xaml files)
00后女孩月薪3200,3年买两套房,这个程序员变现新风口千万要把握住
数据中台解决方案及未来发展方向
并查集学习