恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

对象类型的转换

  • 首页
  • 资讯中心
  • /
  • 对象类型的转换

相关资讯

在 IDEA 中集成 Claude 功能:TaoToken 统一 Key 接入与本地验证 2026/10/3 16:27:34
OpenClaw本地部署安装工具包:TaoToken统一Key接入与一键安装验证 2026/10/3 16:27:34
UltraEdit右键菜单项添加删除全攻略:TaoToken配置与验证 2026/10/3 16:27:34

最新资讯

Memoh语音交互功能指南:TTS语音合成与音频转录让AI Agent开口说话
压测机怎么选:Hey负载测试对CPU、内存与网络带宽到底需要多少
Nginx应用与运维——Nginx Web服务应用实战(HTTP增强协议服务器的搭建)
基于STM32+FreeRTOS的NTC温度采集系统:软件定时器触发与断线检测设计
System Design 101 深度解读:系统设计中的五大核心权衡(Top 5 Trade-offs)实战指南
Jev 模型评测深度解析:核心得分、能力局限与最佳适用任务场景

今日推荐

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成
编译原理实验:递归下降分析器消除左递归与避坑指南
Python协议级爬取Shopee商品数据实战

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

对象类型的转换

发布时间:2026/10/3 16:32:35
对象类型的转换 一、什么是对象类型转换对象类型转换发生在有继承关系的父子类之间分为两种向上转型、向下转型。注意基本数据类型转换 和 对象引用类型转换 完全不一样不要混淆。二、向上转型自动转换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做类型判断对象转换只针对引用对象本身不变无继承关系不能进行对象转换。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号