对象类型转换

简介: 对象类型转换

instanceof 操作符

x instanceof A:检验x是否为类A的对象,返回值为boolean型。

  • 要求x所属的类与类A必须是子类和父类的关系,否则编译错误。
  • 如果x属于类A的子类B,x instanceof A值也为true。
public class Person extends Object {…}
public class Student extends Person {…}
public class Graduate extends Person {…}
-------------------------------------------------------------------
public void method1(Person e) {
if (e instanceof Person)
// 处理Person类及其子类对象
if (e instanceof Student)
//处理Student类及其子类对象
if (e instanceof Graduate)
//处理Graduate类及其子类对象
}

对象类型转换 (Casting )

  • 基本数据类型的Casting:
  • 自动类型转换:小的数据类型可以自动转换成大的数据类型 如long g=20; double d=12.0f
  • 强制类型转换:可以把大的数据类型强制转换(casting)成小的数据类型 如 float f=(float)12.0; int a=(int)1200L
  • 对Java对象的强制类型转换称为造型
  • 从子类到父类的类型转换可以自动进行
  • 从父类到子类的类型转换必须通过造型(强制类型转换)实现
  • 无继承关系的引用类型间的转换是非法的
  • 在造型前可以使用instanceof操作符测试一个对象的类型

举例

public class ConversionTest {
public static void main(String[] args) {
double d = 13.4;
long l = (long) d;
System.out.println(l);
int in = 5;
// boolean b = (boolean)in;
Object obj = "Hello";
String objStr = (String) obj;
System.out.println(objStr);
Object objPri = new Integer(5);
// 所以下面代码运行时引发ClassCastException异常
String str = (String) objPri;
}
}
public class Test {
public void method(Person e) { // 设Person类中没有getschool() 方法
// System.out.pritnln(e.getschool()); //非法,编译时错误
if (e instanceof Student) {
Student me = (Student) e; // 将e强制转换为Student类型
System.out.pritnln(me.getschool());
}
}
public static void main(String[] args){
Test t = new Test();
Student m = new Student();
t.method(m);
}
}

image.png

  • 子类继承父类
  • 若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的 同名方法,系统将不可能把父类里的方法转移到子类中。
  • 对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的 实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量
相关文章
|
SQL
若依框架---角色与权限
若依框架---角色与权限
862 0
|
前端开发 数据安全/隐私保护
若依框架---权限控制角色设计
若依框架---权限控制角色设计
3421 0
|
druid Java 数据库连接
数据库连接池及Druid使用步骤
数据库连接池及Druid使用步骤
1618 2
|
3月前
|
存储 Java 数据库
如何开发人事及OA管理系统的会议管理板块?(附架构图+流程图+代码参考)
人事及OA系统是现代企业管理的重要工具,整合人力资源与办公流程,提升效率。其会议管理板块可优化会议室预约、冲突检测、审批流程及数据统计,助力企业高效协作。本文详解功能设计、开发技巧与实现方案。
|
7月前
|
监控 安全 数据可视化
AD域审计工具
ADAudit Plus是一款强大的AD域审计工具,专注于活动目录变更与报告。它通过提取Windows安全日志,实时跟踪AD域内用户行为,明确“谁在何时做了什么”。其功能包括:实时监控AD和组策略更改、可视化组成员行为与访问权限、自动化风险评估分析,以及提供开箱即用的合规性报告(支持HIPAA、GDPR等标准)。这款工具帮助企业有效防止内部威胁,确保AD域健康运行,轻松实现安全管理与合规要求。
240 4
AD域审计工具
|
6月前
|
JSON 前端开发 Serverless
Mock.js 语法结构全解析
Mock.js 的语法规范介绍,从数据模板定义规范和数据占位符定义规范俩部分介绍, 让你更好的使用 Mock.js 来模拟数据并提高开发效率。
|
8月前
|
数据采集 机器学习/深度学习 存储
【亲测有用】数据中台数据质量管理能力演示
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
Java Apache Maven
Java中使用poi+poi-tl实现根据模板导出word文档
这个过程不仅简化了文档生成的工作,而且保证了生成文档的一致性与准确性,特别适合于那些需要生成大量文档的自动化场景。通过以上步骤,Java开发人员可以实现高效、可靠的Word文档导出功能。
3372 0
一种典型的三极管和MOS管结合的开关控制电路
本篇博文分享在实际工作中经常使用的一种典型的三极管和MOS管结合的开关控制电路,关于三极管和MOS管的基础使用方法可以参见下文说明。
|
自然语言处理 数据可视化 机器人
如何画一个词云 | python小知识
词云,又称文字云,是文本数据的视觉表示,通过将网络文本或大量文本数据中出现频率较高的“关键词”以不同大小的字体、颜色或形状进行可视化展示,形成类似云的彩色图形。这种视觉上的突出使得浏览者能够一眼扫过文本就领略到文本的主旨,是数据可视化的一种重要形式 【7月更文挑战第6天】
567 0

热门文章

最新文章