java 向下转型运行时错误_Java向上转型和向下转型
首先定义父类Animal,所有动物都有一个吃东西的方法;子类Dog还增加了一个叫的功能。
public classAnimal {public voideat() {
System.out.println("eat like an animal");
}
}
public class Dog extendsAnimal {
@Overridepublic voideat() {
System.out.println("eat like an dog");
}public voidbarking() {
System.out.println("dog like barking");
}
}
1、向上转型
向上转型(upcasting):子类引用的对象转换为父类类型。
向上转型转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新方法都会遗失掉,在编译时,系统会提供找不到方法错误。
public classDemo {public static voidmain(String[] args) {//upcasting
Animal animal = newDog();
animal.eat();//animal.barking(); The method barking() is undefined for the type Animal
}
}
2、向下转型
在向下转型过程中,分为两种情况:
情况一:如果父类引用的对象的引用是指向的子类对象,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。
情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。它可以使用instanceof来避免出错此类错误。
public classDemo {public static voidmain(String[] args) {
Animal animal= newDog();//情况1
Dog dog1 =(Dog) animal;
dog1.eat();
dog1.barking();//情况2
Dog dog = (Dog) newAnimal();
dog.eat();
}
}
运行结果:
eat like an dog
dog like barking
Exception in thread "main" java.lang.ClassCastException: demo.Animal cannot be cast to demo.Dog
at demo.Demo.main(Demo.java:12)
总结:
1、 父类引用可以指向子类对象,子类引用不能指向父类对象。
2、 向上转型不用强制转型。
3、 向下转型要强制转型。
4、 Upcasting会丢失子类特有方法,子类重写的父类方法有效。
————————————————
版权声明:本文为CSDN博主「犁叔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012739535/article/details/45249853
java 向下转型运行时错误_Java向上转型和向下转型相关推荐
- java scp 上传文件_java基于Scp实现Linux下远程获取、上传文件
前不久在项目开发中遇上的一个需求:需要在B机器上将A机器某路径下的文件拷贝到B机器上做保存. 简单分析下来,自己的理解就是:一个RPC,主要就是解决跨域传输文件的问题.在提前能拿到A机器的IP.Por ...
- java 向下转型运行时错误_java多态和向下转型问题。
Q1:运行结果中dog2和dog3的引用都指向Dog,且引用地址都一样,但是为什么dog2为什么就不能用eat(i)方法呢?Q2:为什么运行结果都是true?Q3:我开始是Animalsdog2=ne ...
- java移除input焦点_java – Eclipse editText在按下完成后删除焦点(光标)
我是Eclipse的新手,我必须通过在软键盘中按下完成按钮后清除editText中的焦点来隐藏光标. 我发现此代码适用于其他人: editText.setOnEditorActionListener( ...
- java jdk7 环境变量设置_Java JDK7在Windows 8下的环境变量配置
win8下jdk7环境变量的配置: 单击计算机(Computer),选择属性(Properties),选择高级系统设置(Advanced systems settings), 选择环境变量(Envir ...
- java 文件夹下的文件_java读取某个文件夹下的所有文件
import java.io.FileNotFoundException; import java.io.IOException; import java.io.File; public class ...
- java 下溯造型_Java 的上溯造型和下溯造型以及举例,以及判断参数等指向的类
(一) 先给出个例子,代码如下: /** * @author WangQun * 动物抽象类 */ abstract class Animal { public abstract void speak ...
- java linux创建文件夹_java web工程在linux下创建文件夹和文件
具体的创建方法参照下面的实例: public class FileTest { public static void main(String[] args) { // 根据系统的实际情况选择目录分隔符 ...
- Java获取文件的目录_Java实现读取某个路径下的文件目录
展开全部 import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.Tab ...
- Java读取hdfs目录下所有文件_Java API 读取HDFS目录下的所有文件
/** * 获取1号店生鲜食品的分类id字符串 * @param filePath * @return */ public String getYHDSXCategoryIdStr(String fi ...
最新文章
- 驰骋工作流携手山东金义,实施落地上海光大银行
- 神经网络结构设计指导原则——输入层:神经元个数=feature维度 输出层:神经元个数=分类类别数,默认只用一个隐层 如果用多个隐层,则每个隐层的神经元数目都一样...
- Android之系统架构
- python 使用 os的 popen(‘命令’) 如果命令行输出中 有中文乱码, 提示 'gbk' 无法解析的错误 解决办法
- 比excel更好用的免费拖拽报表—JimuReport 1.4.4新特性
- Unity4.3 遮挡剔除:基本知识
- 【数据库】第四章 JDBC、MyBatis
- 一、Java语言基础(3)_流程语句——控制循环结构语句
- spring-boot基础知识
- Unix环境高级编程代码(实时更新)
- 定义m是第一个数,之后的每个数都是前一个的平方根,一共有n个数,计算总和。
- Mini-C编译器设计与实现 文档+任务书+评价表+PPT+项目源码
- 低阶的Newton-Cotes求积公式 | 梯形求积公式、Simpson求积公式、Cotes求积公式
- 《3D Point Cloud Registration for Localization using a Deep Neural Network Auto-Encoder》翻译
- 原子弹级别牛股发动机指标软件开发收获
- java dismiss_为什么我的dismiss()方法无法关闭自定义警报对话框
- 习题11-1 输出月份英文名 (15 分)
- 运维必看:低成本数据异地灾备方案
- android系统关机广播,Android开机广播和关机广播
- QQ授权登录和微信授权登录
热门文章
- 使用Kubernetes最常见的10个错误
- Unity画线之GL
- 王慧文广发英雄帖:组队拥抱新时代 打造中国OpenAI
- 金融知识杂记(一) 市盈率 市销率 市净率 逆市操作tips(jhs 0414)
- fastdfs 沧海一粟
- DAY27.XIA.面向對象
- 【国企改革观象台】开展体系化能力建设,筑牢网络安全基石 - 国企十四五安全规划的思考(下)
- 【创业@移动互联网】PP租车CEO(学安卓,创业移动互联)
- “151秒识别128万张ImageNet图像”背后,腾讯告别技术赛马
- MIT TR 35揭晓:阿里巴巴王刚、吴翰清等六位华人当选,Ian Goodfellow上榜