[Java]向上/下转型Casting

一、向上转型。

通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。

1,向上转型中的方法调用。

看下面代码:

注意这里的向上转型:
Animal b=new Bird(); //向上转型
b.eat();

此处将调用子类的eat()方法。原因:b实际指向的是Bird子类,故调用时会调用子类本身的方法。

需要注意的是向上转型时b会遗失除与父类对象共有的其他方法。如本例中的fly方法不再为b所有。

2,向上转型的好处。

看上面的代码,

public static void dosleep(Human h) {
h.sleep();
}

这里以父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。不然的话,
如果dosleep以子类对象为参数,则有多少个子类就需要写多少个函数。这也体现了JAVA的抽象编程思想。

二、向下转型。

与向上转型相反,即是把父类对象转为子类对象。

看下面代码:

Girl g1=new MMGirl(); //向上转型
g1.smile();
MMGirl mmg=(MMGirl)g1; //向下转型,编译和运行皆不会出错

这里的向下转型是安全的。因为g1指向的是子类对象。


Girl g2=new Girl();
MMGirl mmg1=(MMGirl)g2; //不安全的向下转型,编译无错但会运行会出错

运行出错:

Exception in thread "main" java.lang.ClassCastException: com.wensefu.other1.Girl
at com.wensefu.other1.Main.main(Girl.java:36)
如代码所示,可以通过instanceof来防止出现异常。

转载于:https://www.cnblogs.com/webapplee/p/3771707.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8cm等于多少像素_「前端剑指offer第5期」物理像素、逻辑像素、CSS像素、PPI、设备像素比是什么...

# 提问物理像素、逻辑像素、CSS像素、PPI、设备像素比是什么?# 回答物理像素代表屏幕上有多少个点,比如1080x2340表示屏幕一排包含1080个物理像素点。逻辑像素表示屏幕展示物体的视觉尺寸是多少。逻辑像素相同表示物体看起来或者打印出来大小一样&#x…

Python学习之路:函数介绍

编程:面向对象:华山派----->类---->class 面向过程:少林派----->过程--->def 一段段的函数和功能包含在过程中 函数式编程:逍遥派--->函数---->def 过程就是没有return返回值的函数 函数的定义:数学…

php中获取系统信息的方法

2019独角兽企业重金招聘Python工程师标准>>> $root getenv(DOCUMENT_ROOT); 服务器文档根目录$port getenv(SERVER_PORT); 服务器端口$file getenv(SCRIPT_NAME); 当前执行文件$ua getenv(HTTP_USER_AGENT); 用户UA$method getenv(REQUEST_METHOD); 请求方法$p…

[独家全程图解]ThinkPHP6框架的下载与安装

http://www.php.cn/wenda/159638.html 1. ThinkPHP大事记 2017年4月27日,ThinkPHP5.1-beta.1发布 2017年12月31日, ThinkPHP5.1.0发布,标志着快速进入迭代期 2019年3月3日, ThinkPHP5.1已更新迭代到第35个版本(5.1.35) 2019年3月22日, ThinkPHP5.2的 dev 开发版本也发布了 …

玩转CSS3(一)----CSS3实现页面布局

请珍惜小编劳动成果,该文章为小编原创,转载请注明出处。 摘要: CSS3相对CSS2增加了一些新的布局方式:多栏布局和盒子布局。在这篇文章中,将对CSS2的布局进行简单的回忆,并总结CSS3的布局方式。DIVCSS其实是…

openglshader实现虚拟场景_云桌面,实现办公终端的统一管理与运维

随着无纸化办公和智能化办公的不断推进,在办公过程中传统PC电脑的缺点愈发凸显。传统电脑的性能会随着使用时长增加而降低,系统维护处理时效性较弱,出现问题需要运维人员到现场解决,费时费力。如果出现更换设备的情况,…

前端 == Ajax

Django-Ajax 1.目录 ajax 准备知识:json ajax 简介 jquery 实现的ajax js 实现的ajax jquery.serialize() 上传文件 同源策略与jsonp 2.准备知识:json 1.什么是 json ? 个人回答: json 的作用是 数据交换格式。(通过序列化和反序…

Objective-c 程序结构

类是Objective-c的核心,Objective-c程序都是围绕类进行的。Objective-c程序至少包含以下三个部分: 1、类接口:定义了类的数据和方法,但是不包括方法的实现代码。 2、类实现:仓储 了实现类方法的代码。 3、应用程序&…

WordPress 5.0 换回老版”Classic Editor”经典编辑器教程

WordPress 5.0 正式采用了全新的“Block Editor”编辑器,从而替换了原有“Classic Editor”编辑器,相信有很多人和子凡一样会不习惯或者不喜欢新编辑器,那么新版 WordPress 该如何换回原来的 WordPress 编辑器呢? 不可否认 WordPr…

html5视频播放

<video width"320" height"240" controls"controls"> <source src"test.mp4" type"video/mp4"> Your browser does not support the video tag. </video> IE9对于video标签确实是不支持的&…

判断是否存在此对象_JVM的垃圾回收机制,判断对象是否死亡

这节我们主要讲垃圾收集的一些基本概念&#xff0c;先了解垃圾收集是什么、然后触发条件是什么、最后虚拟机如何判断对象是否死亡。一、前言我们都知道Java和C有一个非常大的区别就是Java有自动的垃圾回收机制&#xff0c;经过半个多世纪的发展&#xff0c;Java已经进入了“自动…

Software--Developer Tools_

Log4net 日志框架 由 Java log4j 移植到 .Net 平台的开源日志框架。 http://logging.apache.org/log4net/index.html 转载于:https://www.cnblogs.com/masterSoul/p/7832317.html

界面布局-(资料收集)

jQuery多列网格式拖动布局插件Gridster.js

MFC学习中遇到的小问题和解决方案

MFC学习中遇到的小问题和解决方案 1 清除combox里面的内容 ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除现有所有内容2 如何获取鼠标指针的位置GetWindowRect 详情见657面 超市管理系统 3 如何获取combox下拉列表的索引&#xff1b;int selgetcursel;get…

linux 进程监控和自动重启的简单实现

目的&#xff1a;linux 下服务器程序会因为各种原因dump掉&#xff0c;就会影响用户使用&#xff0c;这里提供一个简单的进程监控和重启功能。 实现原理&#xff1a;由定时任务crontab调用脚本&#xff0c;脚本用ps检查进程是否存在&#xff0c;如果不存在则重启并写入日志。 1…

建造者模式(Builder)

建造者模式&#xff08;Builder&#xff09;   工厂类模式提供的是创建单个类的模式&#xff0c;而建造者模式则是将各种产品集中起来进行管理&#xff0c;用来创建复合对象&#xff0c;所谓复合对象就是指某个类具有不同的属性&#xff0c;其实建造者模式就是前面抽象工厂模…

万兆网卡实际吞吐量_AKITIO 10G/NBASE-T PCIe 网卡开箱拆解评测

前言今天来到koolshare评测室的是AKITIO的10G/NBASE-T PCIe扩展网卡(官网链接)&#xff0c;采用PCIe2.0 x4接口&#xff0c;支持10G/5G/2.5G/1G/100Mbps&#xff0c;可以在100m的CAT-6A线缆上达到最高10Gbps的链接速率&#xff0c;或者在100m的CAT-5e线缆上达到最高5Gbps的链接…

thinkphp 学习 (资料收集)

thinkphp 官网&#xff1a; http://www.thinkphp.cn/ ThinkPHP6入门指南 https://www.kancloud.cn/madnesslin/thinkphp ThinkPHP5.0.24完整版 http://www.thinkphp.cn/down/1278.html ThinkPHP5.0完全开发手册 https://www.kancloud.cn/manual/thinkphp5/118003

EF实体框架数据操作基类(转)

//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司// // 功能描述&#xff1a;实体框架数据仓储的操作接口&#xff0c;包含增删改查接口////------------------------------------------------------------…

【RabbitMQ】8、RabbitMQ之mandatory和immediate

1. 概述 mandatory和immediate是AMQP协议中basic.publish方法中的两个标识位&#xff0c;它们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。对于刚开始接触RabbitMQ的朋友特别容易被这两个参数搞混&#xff0c;这里博主整理了写资料&#xff0c;简单讲解下这两…