java 子类 父类 转换_Java子类与父类之间的类型转换
1.向上转换
父类的引用变量指向子类变量时,子类对象向父类对象向上转换。从子类向父类的转换不需要什么限制,只需直接蒋子类实例赋值给父类变量即可,这也是Java中多态的实现机制。
2.向下转换
在父类变量调用子类特有的、不是从父类继承来的方法和变量时,需要父类变量向子类转换。
为什么要向下转换?
在继承关系中,有一些方法是不适合由父类定义并由子类继承并重写的,有些方法是子类特有的,不应该通过继承得到,且子类可能也会有自己特有的成员变量,那么在使用多态机制的时候,若我们要通过父类型变量使用到这些子类特有的方法和属性的话,就需要将服类型变量转换成对应的子类型变量。一个典型例子便是标准库中的数据类型包装类:Integer类,Double类,Long类等,它们都继承自Number类,且它们都有一个方法叫做compareTo用于比较两个同样的类型。然而这个方法是这些子类通过实现Comparable接口来实现的,在Number类中并没有该方法的实现,因此若要通过Number类型变量来使用compareTo方法,就要先将Number类转换成子类的对象。
注意
父类变量向子类转换必须通过显式强制类型转换,采取和向上转换相同的直接赋值方式是不行的;并且,当把一个父类型变量实例转换为子类型变量时,必须确保该父类变量是子类的一个实例,从继承链的角度来理解这些原因:子类一定是父类的一个实例,然而父类却不一定是子类的实例。在进行父类向子类的转换时,一个好的习惯是通过instanceof运算符来判断父类变量是否是该子类的一个实例,否则在运行时会抛出运行异常ClassCastException,表示类转换异常。
java 子类 父类 转换_Java子类与父类之间的类型转换相关推荐
- java int 64 转换_Java中数据类型及其之间的转换
Java中数据类型及其之间的转换 Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种: 1)int长度数据类型有:byte(8bits).short(16bits).int(32bi ...
- java 用户自定义的父类转换成子类的方法
在工作中,一般是实体类对应的数据库表,另外再定义一个Model继承实体类,在model里往往添加一些辅助的属性.我们从数据库查出的数据放在实体类里,但是展现数据时需要用到model类,这时就需要把实体 ...
- java 父类转换成子类的方法
/* 父类转换成子类的特点: 1:父类转换成子类不能自动完成 2:父类转换成子类的前提是父类的真身是这个子类 3:如果这个父类的真身是子类B,不能强制转换成子类A,只能转换成B. */ class T ...
- 父类转换成子类, 或者是类之间属性拷贝
问题很怪, 其实本不应该这么做的, 将父类转换成子类本就是不安全的行为. 但哪有事事顺心的, 真遇到了还是得解决. /*** 父类*/ class Foo {private String name; ...
- java 子类转换_java 子类父类相互转换
子类转父类 (父类引用指向子类对象) 子类可以转换为父类,如下父类FruitTest与其子类AppleTest classFruitTest { String str= "FruitTest ...
- java 子类属性覆盖_java子类和父类属性重复问题
java 子类继承 父类, 但子类中 包含和父类相同 属性 ,给子类赋值之后,父类的相同的属性值还是空的. 类定义如下: public class Person { private String na ...
- java子类继承父类实例_Java子类继承父类详解
别和我说你真的懂了继承,先来看下面的代码,回答出我的问题再说 代码很简单,如下: 父类: public class T { public void run() { System.out.println ...
- java继承对象转换_java中类与对象的继承重写,存储以及自动转换和强制转换。...
对象的继承 继承关键字:extends 继承的格式: public class 类名 extends 父类名{ } 注:一个类只能继承一个父类.子类继承父类的全部内容. 访问修饰符同类中 同包中 不同 ...
- java继承对象转换_java 继承的基础(转)
java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...
最新文章
- Markdown 基础语法 记录 复制到 typora 中就可以看出来了呦,或者预览哟
- 学习进度(2016.3.13)
- 通用数据库管理工具_了解为什么这个直观的工具是您团队的通用团队管理工具...
- Python计算整数阶乘的几种方法比较
- 新编译的GDAL1.9 C/C++ C# Python版本
- Daily Report 2012.10.30 刘宇翔
- 2018数学建模国赛A题《高温作业专用服装设计》优秀论文(本文由西南民族大学白白不加糖、薄荷CC糖原创)
- 阿里云 mysql 版本_阿里云数据库RDS MySQL版如何选择?
- 翻牌记忆类H5游戏的春天
- android windows 共享文件,安卓手机如何访问电脑局域网共享的文件
- Oracle system identifier already exists specify another SID
- win10 损坏的映像 0xc000012f
- 关于组织 2021年全国大学生数学建模竞赛的通知
- Java将带小数点的String类型值转换成int值
- 服务器esxi虚拟机升级,ESXi 服务器安装升级补丁
- P3480 [POI2009]KAM-Pebbles 题解
- JS动态创建元素(两种方法)
- android上消息推送的实现
- [渝粤教育] 山东大学 大学物理 参考 资料
- [4G5G专题-111]:部署 - LTE 基站站址勘察、设计与选择