`
liuwei1981
  • 浏览: 772461 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161316
社区版块
存档分类
最新评论

78.对象造型

 
阅读更多

在讲述数据类型的时候,我们已经知道,各种简单数据类型之间是可以进行相互转换的,有些转换可以通过系统自动完成,而有些转换必须在程序中通过强制转换来完成。

 

而对于引用类型,也有一个相互转换的机制。同样的,在引用类型数据进行转换的时候,分为自动造型强制造型两种情况。


当从子类转换成父类的时候(或者实现类转换成接口,下同),造型可以自动完成,比如,Teacher是Person的子类,则如果将一个Teacher对象赋给一个Person类型的变量的时候,造型自动完成。


当从父类转换成子类的时候(或者接口转换成实现类),必须使用强制造型,比如,Teacher是Person的子类,如果需要将一个Person对象赋给一个Teacher类型变量的时候,必须使用强制造型。


对象的强制造型可以使用运算符“()”来完成,格式如下:
 SupClass sup = new SubClass();
 SubClass sub = (SubClass)sup;


需要注意的是,无论是自动造型还是强制造型,都只能用在有继承关系的对象之间

并不是任意的父类类型数据都可以被造型为子类类型,只有多态情况下,原本就是子类类型的对象被声明为父类的类型,才可以通过造型恢复其“真实面目”,否则会在程序运行时出错。


在造型的时候,往往需要使用instanceof来判断一个对象是否可以进行造型,以避免运行时的错误(Runtime error)。


比如,Person类有两个子类:Teacher 和Student,还有一个单独的类Test,我们来看下面的代码片断:
Test t = new Test();
Person p = new Student();

Teacher t = (Teacher)p;//将会出现运行时错误
Student s = (Student)t;//因为Test类和Student之间没有任何的继承关系
//所以在编译的时候就会出错(编译错误,compile error)


此时,可以先使用instanceof来判断要造型的对象是否为可以造型的类型,如:


Person p = new Student();
if(p instanceof Teacher){
 Teacher t = (Teacher)p;
}


这样就可以避免出现运行时错误。

分享到:
评论

相关推荐

    AutoCAD 2000三维造型

    AutoCAD 2000涉及的三维功能比以往更广泛,使用本书学会三维造型技术比以往更容易。本书包含了与三维空间和三维造型有关的70条AutoCAD命令,是自学AutoCAD 三维方面的理想书籍。有了本书,你将不再需要其他资料!...

    php开发中最常用的英语单词.docx

    59. **Casting**:转型、造型转换,将一个数据类型转换为另一个数据类型。 60. **Catalog**:目录,用于组织和查找资源的列表。 61. **Chain**:链,通常指对象间的关联结构。 62. **Character**:字符,文本的...

    UML基础、案例与应用(第三版)].施穆勒.扫描版_2分.pdf

    1.3.2 对象图 6 1.3.3 用例图 7 1.3.4 状态图 7 1.3.5 顺序图 8 1.3.6 活动图 9 1.3.7 协作图 10 1.3.8 构件图 11 1.3.9 部署图 11 1.4 其他特征 12 1.4.1 注释 12 1.4.2 关键字和构造型 12 1.5 UML 2.0中的新图 13 ...

    DN80-150mm管件自动化生产线.docx

    1. 抛丸对象:DN80-150mm管件,产品种类主要有弯管、三通、盘承、盘插。 2. 管件材质:球墨铸铁,抗拉强度不低于420MPa,延伸率不低于5%。 3. 造型线生产效率:100型/时。 4. 每型总重量(铸件+浇注系统):26kg-78...

    赣南师范大学素描(美术专业油画、中国画、陶瓷艺术鉴赏研究与修复、美术教育)2020年考研专业课初试大纲.pdf

    2. **考试对象**:报考赣南师范大学美术专业(艺术硕士)油画、中国画、美术教育、陶瓷艺术鉴赏研究与修复方向的考生。 3. **考试时长与分数**: - 时间:180分钟。 - 卷面总分:150分。 ### 二、考试内容与评分...

    编程英语单词

    ### 编程英语单词知识点详解 #### 一、基本概念与术语 1. **Aggregation (聚合、聚集):** - 聚合是面向对象编程中的一个概念,表示一个对象...90. **Casting (转型、造型转换):** - 转型是指将一个类型转换为另一个...

    auto cad 习题

    2. 图层管理:图层是AutoCAD中管理图形对象的关键功能,通过创建、修改和组织图层,可以更有序地进行设计工作。 3. 基本绘图命令:如直线(LINE)、圆(CIRCLE)、矩形(RECTANGLE)等,熟练掌握这些基本命令是绘制...

    Scala程序设计(第2版)

    3.11 惰性赋值 78 3.12 枚举 79 3.13 可插入字符串 81 3.14 Trait:Scala语言的接口和“混入” 83 3.15 本章回顾与下一章提要 85 第4章 模式匹配 86 4.1 简单匹配 86 4.2 match中的值、变量和...

    我国自由式滑雪雪上技巧运动员运动损伤的调查与分析

    这项运动要求运动员在设有雪包的陡坡上,利用滑雪板和滑雪杖,运用熟练的转弯技巧,以最快的速度完成滑行,并在滑行过程中进行空中造型表演。运动员在比赛中需要展现优秀的回转技术、空中动作和高速滑行能力。自由式...

Global site tag (gtag.js) - Google Analytics