JAVA对象 向上转型upcasting,向下转型downcasting
1:向上转型
向上转型,就是java多态中的父类引用指向子类对象。但要注意的是 父类引用不可以访问子类新增加的成员(属性和方法)
代码举例:
/**
* 定义一个父类
*/
public class Anaimal{
private Long height;
public Long getHeight() {
return height;
}
public void setHeight(Long height) {
this.height = height;
} }
/**
* 下面的main方法可测 父类的引用指向子类的对象
* 向上转型 也就是多态
*/
public class Dog extends Anaimal{
private Long dogHeight;
public Long getDogHeight() {
return dogHeight;
}
public void setDogHeight(Long dogHeight) {
this.dogHeight = dogHeight;
}
public static void main(String[] args) {
//父类引用指向子类对象
Anaimal anaimal = new Dog();
//只能访问父类的getHeight方法 不能访问子类的getDogHeight 因为Dog是当做anaimal用的
anaimal.getHeight();
}
}
以上 main()方法中 虽然anaimal是指向Dog()的引用,但是anaimal是当做Anaimal用的 所以看不到Dog独有的那部分
2.向下转型
向下转型就是平时代码中的强转
public static void main(String[] args) {
//父类引用指向子类对象
Anaimal an = new Dog();
//只能访问父类的getHeight方法 不能访问子类的getDogHeight 因为Dog是当做anaimal用的
an.getHeight();
//如果想访问Dog独有的方法,可以把 an向下转型成Dog
//TODO 注意 如果是Anaimal an = new Anaimal(); an是转不成Dog的
Dog an2 = (Dog)an;
an2.getDogHeight();
}
代码TODO 已经说明,使用向下转型的前提,是当前引用 指向的就是所需转型子类的对象。
否则会报错:java.lang.ClassCastException
JAVA对象 向上转型upcasting,向下转型downcasting的更多相关文章
- JavaSE(五)JAVA对象向上转型和向下转型
今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...
- java 向上转型与向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...
- java 向上转型和向下转型
学习向上转型和向下转型怎么用没多难,但是为什么那样用,我搞了很多次没弄明白.没弄明白的原因是平时学习时之看例子,而例子一般都比较简单,没有对象之间的调用,一般就是一个对象调用自己的方法. 首先看下怎么 ...
- java向上转型和向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...
- Java入门记(二):向上转型与向下转型
在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转 ...
- Java中的向上转型和向下转型
首先要明白一点向上转型和向下转型他们都是建立在继承的基础上. 一.向上转型 子类到父类的转换通常称作向上转型,通俗的说就是定义父类对象指向子类对象. 下面通过一个例子来深入理解向上转型. //定义一个 ...
- Java转型(向上转型和向下转型)
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就 ...
- 【JAVA】关于向上转型与向下转型
向上转型: 子类引用的对象转换为父类类型称为向上转型.通俗地说就是是将子类对象转为父类对象.此处父类对象可以是接口 如果子类重写了父类的方法,就根据这个引用指向调用子类重写的这个方法,不是调用父类的, ...
- Java多态的向上转型和向下转型
Java多态的向上转型和向下转型 向上转型:(子类转为父类,自动转型) 格式 :父类类型 变量名 = new 子类类型(); 注:子类赋值给父类,那这时这个父类就能调用子类的方法 向下转型:(父类转为 ...
- Java向上转型和向下转型(附具体样例)
Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一 ...
随机推荐
- 基于角色的访问控制 (RBAC)权限管理
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- Redis数据类型-Strings
Redis 简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI ...
- python-常见用法
一.注释 单行注释:#后全部注释 多行注释:'''所有内容''' 或者使用 """所有内容""" ,多行注释用三对单引号或双引号包裹 二 ...
- python3 安装 basemap 包(windows10)
下载 pyproj 和 basemap 的安装包 basemap 是具有专业标准的地图绘制工具,可以与 matplotlib 的一般绘图功能结合,在地图上绘制数据. basemap 文档:https: ...
- JS Object.defineProperties()方法
JS Object.defineProperties()方法 描述: Object.defineProperties()方法为目标对象同时配置多个属性. 语法: Object.defineProper ...
- java-包装类
包装类存在的意义: 1.对于有些情况,我们不能使用基本数据类型,只能使用引用数据类型.这个时候使用包装类对基本数据类型进行类话来实现. 在jdk1.5前,我们必须手动将基本数据类型数据包装,1.5版本 ...
- Python建立时间事件引擎原理剖析
作为python小白,学习量化交易的曲线是非常陡峭的,唯一好的办法就是一点点啃代码.以下代码案例来自vnpy的引擎代码. # encoding: UTF-8 #定义时间事件 EVENT_TIMER = ...
- C# BitArray 二进制处理
int k = 6; byte[] bytearr = BitConverter.GetBytes(k); BitArray myBA = new BitArray(bytearr); for (in ...
- 2018上IEC计算机高级语言(C)作业 第3次作业_说明
一.博客作业内容 2018上IEC计算机高级语言(C)作业 第3次作业 二.评分规则说明 1.程序调试题,要描述出调试所遇到问题及修改内容,并表述清楚程序功能.流程图不规范的会减1-2分: 2.知识点 ...
- PHP配置文件详解php.ini
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;; ...