java理解向上转型和向下转型

2023-05-16

在讲述向上转型和向下转型之前,我们先简单讲解下多态,如果后续看了有关多态的讲解还是不弄,只能自己上网去查阅和理解.

多态概念:

多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

比如,你的女盆友让你买点水果回来,不管买回来的是苹果还是西瓜,只要是水果就行,这个就是生活中多态的体现

再比如,小猫、小狗、小猪我们都可以把它们叫成小动物.每种小动物都需要吃东西,所以我们可以统一设置他们都必须吃,但是每种小动物的习性不一样,吃东西也不一样.所以每一种动物吃东西不同,也是动物吃东西的一种多态体现.

多关多态的讲解就到这了,下面我们开始讲向上、向下转型

一、向上转型:

首先我们先按照最常规的方式声明一个对象并赋值,等号左边是类型声明,等号右边是对象实例

Animal animal = new Animal();

这时等号两边都是同一类型.

我们变化一下,将等号右边改为等号左边的子类

Animal animal1 = new Dog();

Animal animal2 = new Cat();

这种将子类对象赋值给父类类型的操作就是向上转型,也就是我们常说的父类引用指向子类的对象

因为符号is-a原则,这样写没什么问题.

在日常开发中,我们会大量使用向上转型,这样能发挥多态的特性

除了这种显式的转型,还有在很多时候默认发生向上转型

比如我们将参数声明为父类类型,别人在传参的时候传的是子类对象,这也属于向上转型

public static void eat(Animal animal){

               // ...

}

public static void main(String[] args){

        eat(new Dog());

        eat(new Cat());

}

二、向下转型

向下转型就是反过来,将父类对象实列赋值给子类的声明,在java编译中,直接这样做肯定会编译报错,

Animal animal = new Dog();

Dog dog = animal;//编译会报错,此时animal代表父类实例

因为这不符合is-a原则,所以我们必须加一个括号,括号作用将对象强制转换成指定类型

Animal animal = new Dog();

Dog dog = (Dog)animal;

Cat cat = (Cat)animal;

强制类型转换虽然可以通过编译,但是有可能在运行时转换失败抛出异常.

所以为了保证向下转型成功,我们可以通过instanceof操作符来判断对象实例是否属于某种类型

Animal animal = new Dog();

if(animal instanceof Dog){

        Dog dog = (Dog) animal;

        dog.eat();

}

if(anmal instancfof Cat cat){

        cat.eat();

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java理解向上转型和向下转型 的相关文章

  • 今日做题以及以后的做题思路整理

    1 言语理解不能图快只抓后面的语句 xff0c 还是要花点时间大致理解一下 2 翻译推理还是有不熟悉的地方 xff0c 后期需要弥补一下 3 逻辑填空还是需要不断积累
  • 隔年增长率变形

    普通的隔年增长率 xff1a Aa 43 Bb 61 Cc 一般会叫你通过a 和b 求出c 但是该公式的本质还是Aa 43 Bb 61 Cc xff0c 其实a和b的数值可以为任意形式 xff0c 不仅仅局限于百分数 xff0c 它仅仅只是
  • 2022.9.17

    夜抚红烛垂泪 xff0c 才觉银月满身 若人若物若非故 xff0c 心无可期念无数 流水长东恨满怀 xff0c 人生常憾憾无穷 忽下眉梢 xff0c 又上心头 xff0c 如影相随 xff0c 何羡相思
  • 2022.10.30

    新愁复旧愁 xff0c 苦痛哀伤恨
  • mininet基本操作

    mininet是由斯坦福大学基于Linux Container架构开发的一个进程虚拟化网络仿真工具 xff0c 可以创建一个包含主机 xff0c 交换机 xff0c 控制器和链路的虚拟网络 xff0c 其交换机支持OpenFlow xff0
  • 平均数的增长百分比

    设一个数A和一个数B xff0c 若A B要增长百分之30 xff0c 那么A和B的数值变化将呈现这样的规律 xff1a 1 若B不变 xff0c A增长百分之30 xff0c 则可达到整体增长百分之30 2 若A不变 xff0c B减少百
  • 2022.11.2

    字字句句切切思 心心念念欲语迟
  • 夜思 思芳愿静

    夜抚红烛垂泪 xff0c 才觉银月满身 若人若物若非故 心无可期念无数 声声难抑切切思 xff0c 心心相念欲语迟 流水长东恨满怀 xff0c 人生长憾憾无穷 才下眉梢 xff0c 又上心头 xff0c 如影相随 xff0c 何羡相思
  • 2011/11/26

    听雨听风听愁绵 xff0c 疏雨薄衣心无涟
  • 2022 12 3

    将遭遇的苦难试做上天所给予的理所当然 xff0c 当撑不下去后 xff0c 就用肉泥与血液筑就保护幸福和快乐的围墙 xff0c 人的一生便如此草草地收尾了
  • 国考申论近日书写注意点总结

    一定要审题审清楚 xff0c 它叫你概括问题就主要重心放在问题上 提前做好要点的主题词书写 xff0c 确保后续主题词的书写不会太过垃圾 一定要根据提前安排的行数进行书写 xff0c 不能因为字数的充裕就进行肆意的书写
  • 公共服务设施

    学校 xff1a 小学 xff0c 中学 xff0c 大学 xff0c 中等专业技术学校 xff0c 职业培训机构 xff0c 寄宿制高中和特殊学校 xff0c 幼 xff08 托 xff09 儿园等 医院 xff1a 综合医院 xff0c
  • 倡议书书写细节

    一般来说倡议书所给的材料是一些榜样事迹 xff0c 然后叫你去写相关的倡议书 xff0c 可能是学习榜样精神 或者是榜样行为 xff0c 但是一般来说就是从精神层面或者行为层面进行相关的倡议 当日也可以精神 行为同步倡议 这个时候倡议书的开
  • 倡议书题目所遇困难记录

    充实学习生活明确人生方向 该篇倡议书的主要书写困难在 xff1a 长期以来我训练的相关材料都是与乡村振兴 基层治理以及产业发展相关 xff0c 与榜样事迹精神提炼是相去甚远 xff0c 所以在这方面的训练就比较少 xff0c 所以相关的提炼
  • 文化共享惠民生短评

    文化共享惠民生 今日故宫博物院养心殿多件文物移驾至首都博物馆 xff0c 以亲民 开放姿态融入大众生活 但是 xff0c 各地文物资源闲置情况普遍存在 对此 xff0c 让文物走出封闭确有必要 而梁祝遗存与各地美术馆在该方面工作开展十分值得
  • 自然场景文本检测识别 - 综述

    自然场景文本检测识别 综述 Part II 坚果粥 xff1a 自然场景文本检测识别 综述 Part I26 赞同 1 评论文章 拥有这些背景知识后 xff0c 我们可以开始学习自然场景文本检测识别 xff08 STR xff09 的算法模
  • 议论文写作结构

  • 议论文书写总结

    观点如何引入以及背后原理 议论文的书写有一个常用的书写模板 xff0c 也就是五分三式 有人说这种模板的得分不高 xff0c 也有人只要核心内容切实 不空范 xff0c 论证严谨就也是可以的 那么议论文该如何才能写好 以下仅为随笔 xff0
  • 议论文开头的引出原理

    相信大家都写过议论文 xff0c 议论文开头如果用大家普遍的描述去形容 xff0c 便是用温和的方式将观点进行引出 xff0c 但是此句话太过浅薄 xff0c 难以深入实质 原理 议论文的开头从本质上来说 xff0c 是大脑在看到题干所给的
  • 面试总结1

    总结 xff1a 面试不是以模板为驱动 xff0c 是以题目为驱动 与申论书写类似 xff0c 以模板为驱动 xff0c 只会削足适履 xff0c 让自己没有办法较好地发挥出来 xff0c 流畅性以及自身的创新性都没有办法较好地得到体现 以

随机推荐

  • 模式识别 一

    模式识别 教材选择模式识别基本概念模式识别的主要方法应用领域模式识别与机器学习的区别模式识别典型过程前修基础课程课后问题解答1 简述特征空间优化的方法2 简述分类器的设计准则3 简述分类器设计的基本方法4 简述在什么情况下分类器不可分5 分
  • Docker 持久化存储 Bind mounts

    Docker 持久化存储 Bind mounts Bind mounts 的 v 与 mount 区别启动容器基于bind mount挂载到容器中的非空目录只读 bind mountcompose 中使用 bind mount 官方文档 x
  • BGP路由技术详解(一)

    BGP路由技术详解 xff08 一 xff09 前言一 BGP路由协议概述1 BGP定义2 BGP的特点3 BGP分类4 BGP的路径矢量特征5 BGP的路由器6 BGP Peer 二 自治系统AS的概念1 定义2 AS号3 传输AS中的路
  • 计算机网络知识点(三) 数据链路层

    目录 第三章 数据链路层 3 1 数据链路层的设计问题 3 1 1 提供给网络层的服务 3 1 2 成帧 3 1 3 差错控制 3 1 4 流量控制 3 2 差错检测和纠正 3 2 1 纠错码 3 2 2 检错码 3 3 基本数据链路层协议
  • IP地址划分子网

    前言 记录的内容仅是本人在学习IP的路上的一些心得体会 IP组成 网络号 43 主机号 其实说到底就是一连串的二进制 地址分类 A类 xff1a 10 0 0 0 xff5e 10 255 255 255 B类 xff1a 172 16 0
  • 电脑网络(校园网/热点)持续连不上,连上后自动断联

    ipconfig flushdns xff1a 无效重启解决 xff1a
  • 工厂模式

    1 工厂方法 针对一个产品一个工厂 span class token keyword interface span span class token class name Moveable span span class token pun
  • 使用VSCode快速提交Gitee

    使用VSCode提交Gitee 前言下载GitGitee创建仓库使用VSCode克隆仓库到本地源代码管理界面说明保存账号密码 xff0c 不用每次提交输入 前言 每次用GitHub都要FQ xff0c 所以改用Gitee 下载Git Git
  • 配置webpack-dev-server自动化

    1 注意版本 xff0c 可能会有冲突 个人建议使用以下版本 xff0c 本人没有出现冲突 34 webpack 34 34 5 42 1 34 34 webpack cli 34 34 4 9 2 34 34 webpack dev se
  • Docker容器时间和服务器时间相差8小时

    项目场景 xff1a 在微服务部署时使用docker作为容器 xff0c 部署在服务器上时间不一致 问题描述 在服务器上使用docker进行项目部署时 xff0c docker容器时间和服务器时间相差8小时 xff0c 导致插入数据库时间不
  • anaconda中使用pip无法安装库到指定环境下的问题(已解决)

    参考文章 xff1a https blog 51cto com u 15060549 4662570 login 61 from csdn 大致意思就是通过修改site py文件中的 这段代码 xff0c 将这两个变量修改为环境自身的路径即
  • 使用Java实现HDFS文件读写

    1 HDFS读文件 2 HDFS写文件 3 实例操作 3 1新建Mawen工程 3 2在pom xml中将标签中内容替换为以下代码 xff0c 静待依赖包下载完毕 lt dependencies gt lt dependency gt lt
  • GD32F303移植FreeRTOS多任务调度只能执行一个任务解决办法

    1 问题描述 GD32F303移植完FreeRTOS后创建多个任务 xff0c 运行的时候只有一个任务在运行 xff0c 其余任务处于卡死不运行状态 xff0c void start task void pvParameters taskE
  • npm显示升级到最新版本仍然显示npm为原版本的问题解决

    文章目录 前言一 问题描述二 问题原因三 解决方法1 查看npm安装路径2 修改npm全局安装路径命令3 npm更新命令 总结 前言 在升级npm版本时遇到了显示版本升级成功 xff0c 但是在继续执行npm v命令查看npm版本时仍然显示
  • 教你做一个属于自己的平衡小车,用STM32F103单片机实现(代码篇)

    平衡小车软件篇 平衡小车硬件篇 目录 一 定时器相关代码 1 TIM2 2 TIM3和TIM4 二 中断相关代码 三 电机相关代码 四 OLED屏幕和MUP6050相关代码 五 PID函数 1 直立环 2 速度环 3 转向环 六 控制函数
  • MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column whic

    报错信息 报错信息及语句如下 span class token keyword SELECT span i span class token punctuation span sku id sku id span class token p
  • Ros2 Foxy:apt-get update过程中密钥问题

    本人在Ubuntu20 04中根据官方文档Foxy安装Rox2出现 The following signatures couldn t be verified because the public key is not available
  • CSS解决高度塌陷的几种方式

    浮动元素对兄弟元素的影响 当设置元素浮动时 xff0c 会脱离文档流 xff0c 飘在不设置浮动兄弟元素的上面 xff0c 不占据底下的屏幕位置 注意文字是不会被浮动元素覆盖掉 清除浮动的方式 两个元素同时设置浮动 clear both 清
  • Integer值比较

    包装类与基本数据类型 包装类是将基本数据类型封装成一个类 xff0c 包含属性和名称 使用 xff1a 在使用过程中 xff0c 会涉及到自动装箱和自动拆箱 装箱 xff1a 将基本数据类型转换成包装类 span class token c
  • java理解向上转型和向下转型

    在讲述向上转型和向下转型之前 我们先简单讲解下多态 如果后续看了有关多态的讲解还是不弄 只能自己上网去查阅和理解 多态概念 多态是面向对象程序设计 xff08 OOP xff09 的一个重要特征 xff0c 指同一个实体同时具有多种形式 x