当前位置: 首页 > wzjs >正文

西安定制网站建设湖南百度推广代理商

西安定制网站建设,湖南百度推广代理商,win2012服务器网站建设,在线发外链工具在面向对象编程中,转型(Casting) 是指改变对象的引用类型,主要涉及 继承关系 和 多态。 向上转型(Upcasting) ⬆️ 定义 将 子类对象 赋值给 父类引用(自动完成,无需强制转换&…

在面向对象编程中,转型(Casting) 是指改变对象的引用类型,主要涉及 继承关系多态

向上转型(Upcasting) ⬆️

定义

子类对象 赋值给 父类引用(自动完成,无需强制转换)。

特点

✅ 安全:子类一定 “是” 父类(Dog 是 Animal)。
✅ 自动转型:编译器隐式完成,无需手动转换。
✅ 丢失子类特有方法:父类引用只能调用父类定义的方法。

代码示例

class Animal {void eat() { System.out.println("动物在吃"); }
}class Dog extends Animal {void bark() { System.out.println("狗在叫"); }
}public class Main {public static void main(String[] args) {Dog dog = new Dog();  // 子类对象Animal animal = dog;  // 向上转型(自动)animal.eat();  // 可以调用父类方法// animal.bark();  // ❌ 编译错误!父类引用无法调用子类特有方法}
}

输出

动物在吃

关键点

  • Animal animal = dog; 是向上转型,animal 只能访问 Animal 类的方法(eat())。
  • 如果调用 bark(),编译器会报错,因为 Animal 类没有定义该方法。

向下转型(Downcasting) ⬇️

定义

父类引用 强制转回 子类引用(需手动转换,且可能抛出异常)。

特点

⚠️ 不安全:必须确保父类引用 实际指向该子类对象,否则会抛出 ClassCastException
🔹 需显式转换:必须用 (子类名) 强制转换。
🔹 恢复子类特有方法:转型成功后,可以调用子类的方法。

代码示例

Animal animal = new Dog();  // 向上转型(Animal引用指向Dog对象)// 向下转型(强制转换)
Dog dog = (Dog) animal;  // 安全,因为animal实际是Dog
dog.bark();  // 可以调用子类方法// 危险的情况!
Animal catAnimal = new Cat();  // Animal引用指向Cat对象
// Dog badDog = (Dog) catAnimal;  // ❌ 运行时抛出ClassCastException!

输出

狗在叫

关键点

  • (Dog) animal 是向下转型,前提是 animal 实际指向 Dog 对象。
  • 如果 animal 实际指向 Cat,强制转 Dog 会抛出异常。

如何安全地向下转型? 🔒

使用 instanceof 检查对象类型,避免 ClassCastException

示例

Animal animal = getRandomAnimal();  // 可能返回Dog或Catif (animal instanceof Dog) {Dog dog = (Dog) animal;  // 安全转型dog.bark();
} else if (animal instanceof Cat) {Cat cat = (Cat) animal;cat.meow();
}

向上转型 vs 向下转型对比表 📊

特性向上转型(Upcasting) ⬆️向下转型(Downcasting) ⬇️
方向子类 → 父类父类 → 子类
安全性安全(自动完成)不安全(需手动检查)
是否需要强制转换不需要(隐式)需要(显式,如 (Dog) animal
方法访问只能调用父类方法可调用子类特有方法
典型用途多态、通用代码设计需要调用子类特有方法时

实际应用场景 🛠️

向上转型的用途

多态:统一处理不同子类对象

List<Animal> zoo = Arrays.asList(new Dog(), new Cat());
for (Animal animal : zoo) {animal.eat();  // 父类引用调用,实际执行子类方法
}

向下转型的用途

调用子类特有方法

Animal animal = getAnimal();  // 可能是Dog或Cat
if (animal instanceof Dog) {Dog dog = (Dog) animal;dog.bark();  // 只有Dog才有bark()
}

一句话总结 🎯

  • 向上转型:子类对象 → 父类引用(自动,用于多态)。
  • 向下转型:父类引用 → 子类引用(手动,需用 instanceof 检查)。

记住

  • 向上转型是 “放宽视野”(把狗当成动物)。
  • 向下转型是 “缩小范围”(把动物还原成狗)。
http://www.dtcms.com/wzjs/433960.html

相关文章:

  • 聋哑工作设计做网站开封搜索引擎优化
  • 做网站推广托管费用电商平台开发需要多少钱
  • 网站建设服务流程贵州seo技术培训
  • 成都商城网站开发设计网站优化排名软件网站
  • 网站建设方案书doc模板怎么申请网站空间
  • 珠海疫情最新消息今天又封了seo排名软件
  • 事业单位备案网站北京网络营销推广外包
  • 如何做网站实名认证精准推广引流5000客源
  • 有哪些网站做的比较好看的黄冈地区免费网站推广平台
  • 橫山区建设局网站seo现在还有前景吗
  • 鲁 网站 备案西安百度推广运营公司
  • 聊城网站百度推广如何做好网络营销推广
  • 计算机编程网课无锡seo公司找哪家好
  • 虫虫管理wordpress软件西安网站关键词优化推荐
  • 代理公司代办网站优化技巧
  • 电商网站成本阿里云免费域名
  • 娱乐网站开发百度账号注册
  • 做网赌网站需要多少钱市场营销策划方案案例
  • 能免费建网站吗俄罗斯搜索引擎
  • 沈阳网站建设活动方案站长工具查询域名信息
  • 做网站 图片 文件夹 放哪儿网站查询信息
  • 什么语言做网站简单网络游戏推广员是做什么的
  • 网站空间 域名百度热搜榜在哪里看
  • 腾讯云网站备案不能用阿里云全国疫情突然又严重了
  • 淘宝代购网站开发网站开发建站
  • 从seo角度做网站流量网络广告营销的典型案例
  • 国外做机械设计任务的网站广州营销网站建设靠谱
  • 网站开发需要学shenme站优化
  • 个人网站怎么做微商网站联盟广告
  • 口红做网站多少钱天津网络推广seo