对象类型的转换
一、什么是对象类型转换对象类型转换发生在有继承关系的父子类之间分为两种向上转型、向下转型。注意基本数据类型转换 和 对象引用类型转换 完全不一样不要混淆。二、向上转型自动转换1. 概念子类对象赋值给父类引用变量自动完成不需要强制转换本质就是多态。 语法父类类型 引用名 new 子类类型();2. 代码示例class Animal{ public void eat(){ System.out.println(动物吃东西); } } class Dog extends Animal{ Override public void eat() { System.out.println(狗吃骨头); } //子类独有方法 public void watch(){ System.out.println(狗看家); } } public class UpDemo { public static void main(String[] args) { //向上转型子类对象给父类引用 Animal an new Dog(); an.eat(); //执行子类重写的eat方法 //an.watch(); //报错向上转型之后无法访问子类独有的方法 } }输出狗吃骨头3. 特点总结自动转换安全不会抛出异常可以调用父类拥有的方法如果子类重写执行子类方法不能访问子类独有的成员与方法使用场景方法参数、返回值实现多态提升扩展性。三、向下转型强制转换1. 概念已经向上转型后的父类引用强制转回子类类型目的是调用子类独有的方法。 语法子类类型 引用名 (子类类型) 父类引用变量;2. 代码演示public class DownDemo { public static void main(String[] args) { //向上转型 Animal an new Dog(); //向下强制转型 Dog dog (Dog) an; dog.eat(); dog.watch(); //此时可以调用子类独有的watch方法 } }输出狗吃骨头 狗看家3. 向下转型的风险如果父类引用实际指向的对象并不是强制转换的子类运行时抛出ClassCastException类型转换异常。错误示范class Cat extends Animal{} public class ErrorDemo { public static void main(String[] args) { Animal an new Cat(); Dog dog (Dog) an; //编译不报错运行抛出ClassCastException } }编译只看左边引用类型不看真实对象错误只会在运行的时候暴露所以向下转型必须做校验。四、instanceof 关键字重点用来规避转型异常1. 作用判断引用变量实际指向的对象是不是某个类或者其子类的实例返回布尔值 true/false。 语法引用变量 instanceof 类名2. 标准安全向下转型模板先判断再强转开发中固定写法。public class InstanceofDemo { public static void testAnimal(Animal animal){ //判断真实对象是不是Dog if(animal instanceof Dog){ Dog dog (Dog) animal; dog.watch(); }else if(animal instanceof Cat){ Cat cat (Cat) animal; cat.catchMouse(); }else{ System.out.println(其他动物); } } public static void main(String[] args) { testAnimal(new Dog()); testAnimal(new Cat()); } }Java14 新特性模式匹配初学者了解即可if(animal instanceof Dog dog){ dog.watch(); //直接使用dog变量不用手动强转 }五、向上转型与向下转型对比表项目向上转型向下转型方向子类 → 父类父类 → 子类转换方式自动无需强转强制(子类)安全性绝对安全有风险可能ClassCastException访问权限只能访问父类方法子类独有不可访问可以访问子类全部方法使用前提继承 / 实现关系必须先向上转型配合instanceof判断本质多态为了调用子类特有功能六、常见易错点梳理没有继承关系的两个类不能做对象类型转换直接编译报错对象类型转换转换的是引用类型对象本体不会发生任何改变instanceof判断的是真实 new 出来的对象不是左边的引用类型成员变量不受多态影响转型后访问变量看引用类型不看实际对象。示例验证变量class A{ int num 10; } class B extends A{ int num 20; } public class VarTest{ public static void main(String[] args) { A a new B(); System.out.println(a.num); //向上转型输出10看引用A B b (B)a; System.out.println(b.num); //向下转型输出20看引用B } }七、本章小结向上转型子类赋值父类引用自动安全多态基础牺牲子类特有功能向下转型父类引用强制转为子类用来访问子类独有方法存在类型转换异常风险做向下转型之前务必使用instanceof做类型判断对象转换只针对引用对象本身不变无继承关系不能进行对象转换。

相关新闻

-7 / 2 在 C 里是 -3,在 Python 里是 -4,谁算错了?

-7 / 2 在 C 里是 -3,在 Python 里是 -4,谁算错了?

参考:Andrew Koenig《C 陷阱与缺陷(第二版)》7.7节 目录 三条性质 三条不可能同时成立 C 到底保证了什么 例子:哈希表下标 实测:C 给的是哪一套 同一个式子,Python 给的是相反的答案 Koenig 在 7.7 …

2026/11/6 23:36:18 阅读更多 →
在MCP架构中,如何部署大模型、启动和初始大模型?MCP Client如何与大模型交互?TaoToken统一Key通道实践

在MCP架构中,如何部署大模型、启动和初始大模型?MCP Client如何与大模型交互?TaoToken统一Key通道实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 9:01:02 阅读更多 →
文华财经指标公式富途牛牛

文华财经指标公式富途牛牛

HH:HHV(HIGH,13); LL:LLV(LOW,13); HH1:BARSLAST((HH>REF(HH,1))); LL1:BARSLAST((LL<REF(LL,1))); DRAWTEXT(CROSS(HH1,LL1),90,众),COLORWHITE; DRAWTEXT(CROSS(LL1,HH1),90,4),COLORYELLOW; DRAWTEXT(CROSS(HH1,LL1),60,龙),COLORWHITE; DRAWTEXT(CROSS(LL1,HH1),60,8…

2026/10/25 0:03:12 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/11/6 15:21:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/11/6 9:29:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/6 22:01:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/11/6 22:01:11 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/11/6 8:08:42 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/11/6 22:01:09 阅读更多 →

日新闻

周新闻

月新闻