java父类转换成子类_【转】java 父类与子类的转换
最近同事调的一个服务报错,查看后是日期之间转换出的问题。代码里是把 java.sql.Date 类型的对象 强制转换为
java.sql.Timestamp 类型的对象。报java.lang.ClassCastException。
代码:
java.sql.Date date = new
java.sql.Date(2011,9,15);
Timestamp ts =
(Timestamp)date;
这样的代码根据就编译不过。因为查看Java的Api,会发现 java.sql.Timestamp 继承
java.util.Date,同样 java.sql.Date 也继承 java.util.Date
。两个没有继承关系的类对象是不能进行转换的。
解决办法:
java.sql.Date date = new java.sql.Date(2011,9,15);
Timestamp ts = new
Timestamp(date.getTime());
借此也想深入研究一下Java的父类与子类之间转换的问题。
例子:
父类:
public class ParentClass {
private String privateStr = "privateStr var";
public String publicStr = "publicStr var";
public String sayHello(){
return "hello , this is a parentclass's function";
}
}
子类:
public class ChildClass extends ParentClass {
private String inStr = "hello icepeter";
public String outStr = "hello everyone";
public String goHome(){
return "go home!";
}
}
测试类:
public class Test {
public static void main(String[] args) {
//测试一:子类转父类
ParentClass pc1 = new ChildClass(); //上溯造型
System.out.println(pc1.publicStr);
//System.out.println(pc1.privateStr); 访问父类里的私有变量出错
System.out.println(pc1.sayHello());
//System.out.println(pc1.goHome()); 访问子类里的公有方法出错
//System.out.println(pc1.outStr); 访问子类的变量出错
//测试二:父类转子类
//第1种情况 会抛出java.lang.ClassCastException:
ParentClass pc2 = new ParentClass();
ChildClass cc2 = (ChildClass) pc2;
//这里必须强制类型转换 //下溯造型
System.out.println(cc2.publicStr);
System.out.println(cc2.outStr);
System.out.println(cc2.sayHello());
System.out.println(cc2.goHome());
//第2种情况
ChildClass ccS = new ChildClass();
ParentClass pc3 = ccS;
ChildClass cc3 = (ChildClass) pc3;
//这里必须强制类型转换
//下溯造型
System.out.println(cc3.publicStr);
System.out.println(cc3.outStr);
System.out.println(cc3.sayHello());
System.out.println(cc3.goHome());
}
}
总结:
如
果一个对象与另一个对象没有任何的继承关系,那么他们就不能进行类型转换。如果要把一个派生类对象赋值给基类对象这个称为上溯造型。如果要把基类对象赋值
给派生类对象就需要强制类型转换,这称为下溯造型,下溯造型有一些危险,要安全的进行下溯造型有一个前题,基类对象必须是从派生类对象中上溯过来的。
java父类转换成子类_【转】java 父类与子类的转换相关推荐
- java怎么把毫秒转换成天数_关于java:如何将毫秒转换为“ hh:mm:ss”格式?
我糊涂了. 绊倒这个线程后,我试图找出如何格式化具有hh:mm:ss格式的倒数计时器. 这是我的尝试- //hh:mm:ss String.format("%02d:%02d:%02d&qu ...
- java字符串拆分成数组_用Java实现JVM第八章《数组和字符串》
小傅哥 | https://bugstack.cn 沉淀.分享.成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获.目前已完成的专题有:Netty4.x实战专题案例.用J ...
- 转换成字符串_汇编语言--将字符串中小写字母转换成大写字母
将字符串中小写字母转换成大写字母 思路: 将键盘上输入的字符读入 调用DOS 10号功能 利用偏移量的性质(类似指针的移动),逐一将字符转换为大写 在转换完的字符串后面 加上 结束符 '$' 利用DO ...
- java 输出流转换成输入流_在JAVA中如何将输出流转为输入流的类的实现
问题背景 在实际应用中,我们会碰的一个功能的输出的字节流,是另一个功能输入字节流的情况.一般情况下,我们可以使用ByteArrayOutputStream和ByteArrayInputStream实现 ...
- OFD文件转换成PDF格式,Java语言实现
OFD文件转换成PDF格式,Java语言实现 我个人的思路大致是这样的.首先在指定路径创建一个文件夹,然后每次要转换的时候都把OFD文件统一放到指定的文件夹内进行转换.这样写代码的时候只需要循环遍历一 ...
- java 运行jar包命令_用java –jar 命令运行Jar包
摘要 这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包.学会如何写一段转换jar包的程序,将你的jar包转换成你能使用java -jar 命令运行jar包或象在 ...
- java编写输出20个数_【Java每日编程小练习 2021-01-20】
1 题目重述 题目描述: 字符串压缩 解释: 将原字符串中连续出现的字符,按照出现次数进行压缩处理. 例如: 输入:AACBBBDDDDDFFX 输出:A2C1B3D5F2X1 输入:AACCCDKK ...
- java -jar 运行jar包_用java –jar 命令运行Jar包
用java –jar 命令运行Jar包 摘要 这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包.学会如何写一段转换jar包的程序,将你的jar包转换成你能使用j ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- 如何把幻灯片ppt转换成视频_百度经验
如何把幻灯片ppt转换成视频_百度经验 Powerpoint 2010直接转PPT为视频文件_天极网
最新文章
- 如何使用div优雅的布局
- 聋人工学院计算机老师,聋人工学院12位手语老师用双手传递声音
- Java实现二叉树的前中后序遍历(Leetcode)
- 如何在C#中实现图片缩放
- 人工智能凉凉了?中国 AI 人才缺口高达 12113 个!
- matlab plot symbol,导入时出错matlab.引擎不导入ubuntu16.04上python3.5.2中的matplotlib。为什么?...
- PN532读写卡器(支持NFC、RFID)
- 字符串匹配算法KMP详解
- 华为手机HTML调试,华为手机打开usb调试_卓师兄自助教程_卓师兄官网
- 基本初等函数求导公式
- 手机应用误删怎么恢复
- [VMWare]vmx86版本不对
- 如何写出高效率的sql语句
- Java 学习API(一)
- 盒子模型有时候会出现设置背景、边框无法撑大和设置内外间距异常,一般来说此类问题的原因是什么?
- 为什么我的公众号没有留言功能呢?
- JAVA计算机毕业设计爱馨敬老院网站Mybatis+系统+数据库+调试部署
- Flutter中如何利用StreamBuilder和BLoC来控制Widget状态
- 怎么彻底清除C语言软件,【AUTO Uninstaller - 使用教程】Autodesk系列软件终极完美修复卸载工具【转载】...
- 使用 js 实现累乘之和
热门文章
- English trip V1 - 22. My Life Teacher:Emily Key: describe talk about past 过去式
- Excel获得焦点变色
- appium第一个安卓自动化工程
- 144.ipv4地址匮乏的解决方法
- 84.断点 85.显卡
- java 伪异步 netty,Netty(一) - 不死的达芬奇的个人空间 - OSCHINA - 中文开源技术交流社区...
- java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?
- java contains_Java基础教程|生成不重复随机数 java
- SSL/TLS协议详解
- 030_Message消息提示