Java学习多态之向下转型
创始人
2024-03-23 07:02:40
0

目录

语法

注意事项

一、

二、

三、

举例说明

注意事项第二条的解释

 总结


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

语法

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

注意事项

一、

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

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

二、

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

三、

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

举例说明

接着向上转型,希望解决的问题:可以调用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或者其他子类

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...