1)自动转换(替代原则)

由于子类继承了超类的数据和行为,因此子类对象可以作为超类对象使用,即有下面的替代原则。

替代原则:凡是需要使用超类对象的地方都可以用子类对象代替。

含义是,假设parent是一个超类对象,child是一个子类(直接或间接)对象,则赋值语句parent = child;(parent 是child的上转型对象)是合法的,而child = parent;是不合法的。例:CastDemo.java

注:上转型对象的特点:

上转型对象不能操作子类声明定义的成员变量和方法;

上转型对象可以代替子类对象去调用子类重写的实例方法。如果子类重写了父类的某个实例方法后,子类对象的上转型对象调用这个方法时,一定是调用了这个重写的方法。

上转型对象可以调用子类继承的成员变量和隐藏的成员变量。

可以将对象的上转型对象再强制转换成一个子类对象,这时该子类对象又具备了子类的所有属性和功能。

2)强制类型转换

可以将一个超类对象转换成子类对象,这时需要使用强制类型转换。强制类型转换需要使用造型运算符“()”,例如上面代码中的语句:

cylin = (Cylinder) circle;

注意:不是任何情况都可以进行强制类型转换,下面代码:

Circle circle = new Circle();

Cylinder cylin = (Cylinder) circle;

上述代码是要将超类对象转换为子类对象,代码编译时没有错误,但运行时会抛出ClassCastException异常。

**将超类对象转换为子类对象,必须要求超类对象是用子类构造方法生成的对象,这样转换才正确。(Father f = new son(); Son s2 = (Son)f;)

**转换只发生在有继承关系的类之间。

Java基本类型转换相关推荐

  1. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

  2. Java数据类型转换全解

    Java数据类型转换全解 我们知道Java语言是典型的支持面向对象的程序语言,但考虑到有些基本Java数据类型的结构简单,占内存小且存取速度快等优点,Java依然提供了对这些非面向对象的简单Java数 ...

  3. Java数据类型转换(自动转换和强制转换)

    数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然"进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转 ...

  4. php自动转换和强制转换,Java数据类型转换(自动转换和强制转换)

    数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然"进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转 ...

  5. Java对象类型转换

    将一个类型强制转换成另一个类型的过程被称为类型转换.本节所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,会抛出 Java 强制类型转换(ja ...

  6. Java byte类型转换成int类型时需要 0XFF的原因

    Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...

  7. JAVA基础-类型转换

    在java开发之中,经常会涉及到不同基础数据之间进行相互转换.JAVA语言除了布尔类型的数据外,其他的7种数据类型之间可以相互转换. java之中类型转换方式分两种:自动类型转换和强制类型转换: 1. ...

  8. java数据类型转换方向_java基础学习篇02(数据类型转换和基本面试题)

    JAVA基本数据类型转换 java中的数据类型,分为,引用数据类型和基本数据类型.基本数据类型有8中 整型:byte 8位 . short 16位 .int 32位 .long 64位. (8位=1个 ...

  9. JAVA强制类型转换常见错误

    这篇文章主要讲解:JAVA强制类型转换经常遇到的问题,主要分为2种情况. 1.当两个类没有继承关系时: package Test;public class Test {public static vo ...

  10. java强制转换用法_Java入门课|这才是Java强制类型转换的正确使用方法,你真的会用这些吗...

    [摘要]作为一门面向对象编程语言,Java吸收了C++语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的 ...

最新文章

  1. LeetCode简单题之数组元素积的符号
  2. AngularJS2 + ASP.NET MVC项目
  3. 如何去除 IDEA 中 xml 文件的屎黄色背景
  4. python调用cmd命令
  5. 安卓桌面软件哪个好_安卓模拟器哪个比较好?
  6. 强烈推荐几个我常置顶阅读清华、哈工大的平台公众号!
  7. CF981E Addition on Segments 线段树分治 + bitset优化
  8. 求第k小的数(洛谷P1923题题解,Java/C++语言描述)
  9. python threadPool 与 multiprocessing.Pool
  10. SECS/GEM协议开发应用
  11. 最新计算机java毕业设计题目选题推荐2023
  12. python遍历json对象顺序输出_fastJson顺序遍历JSON字段
  13. 研究鸟类迁徙的目的和意义
  14. mysql evict_善用MySQL AHI加速神器,让你的InnoDB查询飞起来!
  15. 【VB】中CInt()、Fix()、Int()的区别
  16. 自学计算机编程语言经历!
  17. webstorm 移动到末尾并且换行快捷键
  18. Spire.Doc利用word样式读取word文字内容(.NET)
  19. 淘淘商城分布式电商系统项目总结
  20. ar1220e-s虚拟服务器,华为路由器AR1220E-S和华为AP3010 FIT模式与openportal对接教程

热门文章

  1. BIGEMAP中添加第三方卫星影像
  2. 华硕无双性能、体验双升级,“里子”“面子”精致又强悍
  3. cocos creator 3.x 精灵不显示、加载动态图片、物理碰撞、人物跟随鼠标移动、碰撞后节点销毁
  4. P3084 [USACO13OPEN]照片Photo
  5. 质量流量计雷电击故障的应对策略
  6. softlayer iso_在SoftLayer服务器上使用图形界面
  7. 从零开始学习InfluxDB:安装和使用入门教程
  8. 搭建Python虚拟环境
  9. 基于k210的水果分拣
  10. kaggle——Santander Customer Transaction Prediction