Java学习多态之向下转型

news2024/9/22 15:30:52

目录

语法

注意事项

一、

二、

三、

举例说明

注意事项第二条的解释

 总结


向下转型:解决向上转型中不能调用子类特有成员的问题

语法

子类类型 引用名 = (子类类型)父类引用;

注意事项

一、

只能强转父类的引用,不能强转父类的对象(即不能改变堆里的对象本身)

举例:一个人的身份会发生变化,但是本质上还是这个人,但是随着身份地位的变化,权限也会发生变化

二、

要求父类的引用必须指向的是当前目标类型的对象(抽象概念)

三、

当向下转型(强转)后,就可以调用子类类型中的所有成员

举例说明

接着向上转型,希望解决的问题:可以调用Cat的catchMouse方法

在PolyDetail里面运用向下转型

 语法类似数据类型的强制转换 int n1 = (double)1.5;

转换之后cat的编译类型是Cat,运行类型是也是Cat,所以可以调用catchMouse,运行时也是从Cat类开始查找

注意事项第二条的解释

要求父类的引用必须指向的是当前目标类型的对象

父类的引用是animal,指向的是Cat类对象(向上转型),在向下转型之后,对象引用cat也指向Cat类对象

新建一个Dog类,继承Animal类

package com.hspedu.poly_.detail_;

public class Dog extends Animal{
}

 

如果将animal转换成Dog类,那么运行时就会报错

内存图

 

Dog类的对象引用是不能指向Cat类的对象的,所以在运行时会报错 

 

 总结

因为向上转型之后,对象引用animal指向的是Cat类的对象,所以在向下转型的时候,其目标类型也只能是Cat类,而不是Dog或者其他子类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows子系统WSL2 (ubuntu安装 docker、nvidia-docker)

文章目录一、准备二、安装WSL2三、安装docker nvidia-docker附录:WSL与linux路径映射一、准备 第一步:【win R】输入winver 检查你的 Windows 版本,验证内部版本是否低于19041, 升级系统选择Dev 渠道 第二步:【控制面板】>…

基于RRT算法的最优动力学路径规划(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 RRT是Steven M. LaValle和James J. Kuffner Jr.提出的一种通过随机构建Space Filling Tree实现对非凸高维空间快速搜索的算法。…

这款台灯,不仅能护眼,还能点读和互动

疫情反复,孩子不能正常返校 天天在家上网课、写作业 长时间用眼引发视疲劳 用眼健康需要格外关注 想要改善孩子的用眼环境 CTWing物联网市场推荐使用 好记星智能学习台灯 国AA级护眼标准,能点读,会说话 这款智能学习台灯好在哪里&…

旅游网站毕业设计,旅游网站网页设计设计源码,旅游网站设计毕业论文

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的景区景点购票系统,整个网站项目使用了B/S架构,基于python的Django框架下开发;管理员通过后台录入信息、管理信息,设置网站信息,管理会…

186页13万字智慧能源大数据分析平台建设方案

目录 智慧能源大数据分析平台及能源集团数字化平台建设方案 目录 一、相关项目背景 二、需求理解 2.1 需求理解 三、方案设计 3.1 整体方案设计 3.3.1 整体架构 3.3.2 解决方案说明 3.3.3 需求应答 3.2 数据仓库 3.2.1 数据仓库架构 3.2.2 数据仓库产品说明 3.2.3…

高通平台开发系列讲解(AI篇)SNPE工作流程介绍

文章目录 一、转换网络模型二、量化2.1、选择量化或非量化模型2.2、使用离线TensorFlow或Caffe模型2.3、使用非量化DLC初始化SNPE2.4、使用量化DLC初始化SNPE三、准备输入数据四、运行加载网络沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍SNPE模型工作…

十万部冷知识:为什么会有点球大战?

在上一部的“冷知识”当中,我们跟大家提到了在小组赛中决定排名的方法,比到最后哪哪都平的情况下,甚至都会以抽签的方式决定。 但是到了淘汰赛里,往往就不会这么儿戏了。双方在常规时间和加时赛都打平的情况下,会直接进…

《自己动手写CPU》学习记录(1)——第1章

引言 此专栏的文章记录自己学习《自己动手写CPU》的过程。算是一个学习笔记,里面也会夹杂个人的思考以及代码编写。希望自己可以像作者一样,坚持到最后。加油~~ 本篇学习MIPS32处理器的基本架构。 致谢 感谢书籍《自己动手写CPU》及其作者雷思磊。一…

注册ChatGPT全攻略

参考: 最近ChatGPT很火,但有人注册会经常出现不服务当区域问题,现在把手教你解决。 准备 代理,要求是,韩国,日本,印度,新加坡,美国这几个地址。其他的不太清楚,反正香港…

开关电源环路稳定性分析(03)-开环电源

大家好,这里是大话硬件。 在前面的章节中,分析了开关电源为什么需要闭环环路控制,并且得出了开关电源需要稳定可靠,就必须增加环路控制的结论。虽然目前开关电源环路控制的方法很多,但是较常用的是电压控制方式。 这一…

联表查询之交叉连接、内、外连接

目录 1、交叉连接(笛卡尔积) 2、内连接 2.1 显示内连接(inner join) 2.2 隐示内连接 2.3 内连接的练习 2.3.1 查询第一或者二学期中所有的学生 2.3.2 查询第一和第二期所有的学生 2.3.3 查询每个班级下的学生总数,…

目标检测 YOLO5部署安装测试

一、下载模型 yolov5: 同步更新官方最新版 Yolov5 ,发行版提供模型下载地址 (gitee.com)https://gitee.com/monkeycc/yolov5?_fromgitee_search二、导入需要的包 pip install -r requirements.txt -i https://pypi.douban.com/simple/三、下载模型yolov5s.pt放到根…

Java进阶——多线程基础

文章目录线程基础1、线程介绍1.1、线程相关概念2、线程基本使用创建线程的两种方式:2.1、 继承Thread 类,重写run方法2.2、实现Runnable接口,重写run方法2.3、多线程的简单演示:2.4、继承Thread 和实现Runnable 的区别2.5、线程终…

基于鲸鱼算法优化的lssvm回归预测-附代码

基于鲸鱼算法优化的lssvm回归预测 - 附代码 文章目录基于鲸鱼算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于鲸鱼算法优化的LSSVM4.测试结果5.Matlab代码摘要:为了提高最小二乘支持向量机(lssvm)的回归预测准确率,对…

行列式基础

进阶版:(努力更新中) 二阶行列式 我们先来看看二元一次方程。 {a1,1x1a1,2x2b1a2,1x2a2,2x2b2\left\{ \begin{matrix} a_{_{1,1}} x_{_1} a_{_{1,2}} x_{_2} b_{_1} \\ \\ a_{_{2,1}} x_{_2} a_{_{2,2}} x_{_2} b_{_2} \end{matrix} \ri…

[附源码]计算机毕业设计葡萄酒销售管理系统论文Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【算法篇】利用堆高效解决大数据量时TOP-K问题

Top-k问题1.问题描述2.分析问题3.思路4.复杂度分析5.代码实现6.总结堆相关博客: 堆1.问题描述 TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前…

C语言第十九课:补充知识——函数栈帧的创建与销毁

目录 前言: 一、寄存器: 二、函数栈帧的创建与销毁: 1.main函数函数栈帧开辟的准备: 2.main函数函数栈帧的开辟: 3.Add函数函数栈帧的开辟: 4.Add函数函数栈帧的销毁: 5.main函数函数栈帧的销…

Linux多线程

Linux多线程 文章目录Linux多线程1.Linux线程概念1.1 什么是线程1.2 线程的执行流1.3 线程的优缺点1.4 线程的异常与用途2.进程与线程的区别总结3.多进程与多线程的应用场景4.线程控制4.1 进程ID与线程ID4.2 线程创建(pthread_create)4.3 线程终止(pthread_exit、pthread_cance…

Unity计算着色器 01

序 计算着色器,是什么? Unity中ComputeShader的基础介绍与使用 - 知乎 (zhihu.com) 好像是并行计算的一个东西。再具体的,看不懂了。 并行计算,显卡? 那看来得先了解显卡,铺垫一下,再计划…