java向上转型_Java向上转型
向上类型转换:
1.可以通过父类引用变量调用的方法是子类覆盖或继承父类的方法。
2.父类引用变量无法调用子类新增成员变量和新增成员方法。
举个例子
public classAnimal {
public voidsleep() {
System.out.println("Animal sleep");
}
public voidjump(){
System.out.println("Animal jump");
}
}
class Tom extendsAnimal {
@Override
public voidsleep() {
System.out.println("Tom sleep");
}
public voidjump() {
System.out.println("Tom jump");
}
public static voidmain(String[] args) {
Animal animal = new Tom();//向上转型
animal.sleep();
// animal.jump();
// animal.jump(); 找不到这个方法
}
}
class Jerry extendsAnimal{
public voidsleep() {
System.out.println("Jerry sleep");
}
public voidjump() {
System.out.println("Jerry jump");
}
}
可以看到父类引用变量animal指向子类对象,Animal.sleep的结果是:
Tom sleep
而且animal不能调用子类中新增的方法,这是向上转型的不足之处,那么向上转型的作用体现在哪里呢?我们再创建一个类和一个测试类
public classAction{
public voidmotion(Tom tom){
tom.sleep();
}
public voidmotion(Jerry jerry){
jerry.sleep();
}
}
public classTest {
public static voidmain(String[] args) {
Tom tom = newTom();
Jerry jerry = newJerry();
Action action= newAction();
action.motion(tom);
action.mootion(jerry);
}
}
Action类中有多个motion()方法,feed()的参数都是Animal类的子类。如果频繁修改,代码可扩展性、可维护性差。如何优化呢,使用多态,同一个引用类型,使用不同的实例操作不同的对象;
修改Action类:
public class Action {
// public void motion(Tom tom){
// tom.sleep();
// }
//
// public void motion(Jerry jerry){
// jerry.sleep();
// }
public void motion(Animal animal){
animal.sleep();
}
}
修改完Action后结果是一样的,如此一来,无所谓有多少个子类继承Animal都不需要继续添加motion方法了。
java向上转型_Java向上转型相关推荐
- java 向上转型_java向上转型和向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...
- java的向下转型_Java 向上/向下转型浅析
基于java的继承,向上或者向下转型是一种常见的情景,在thinking in java对这一情况进行了详细说明,见以下例子: class Useful { public void f() {} pu ...
- java 泛型向下转型_Java向上转型和向下转型(附具体样例)
Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { pu ...
- java 技术 管理_java技术转型产品或者项目管理,请大神指导?
产品和项目管理是不同的发展路径,对于题主是转型产品还是项目管理,不妨回答以下几个问题 1.自己愿意朝哪个方向发展,是产品经理还是项目管理? 2.针对项目管理和产品经理可以做SWOT分析,来更清晰的了解 ...
- java向上和向下的区别_Java的向上和向下转型
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向 ...
- java 对象向上转型_JAVA对象向上转型和向下转型
今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...
- java 向下转型运行时错误_Java向上转型和向下转型
首先定义父类Animal,所有动物都有一个吃东西的方法:子类Dog还增加了一个叫的功能. public classAnimal {public voideat() { System.out.print ...
- java多态上转下_(转)java的多态(向上转型、向下转型)
在我的明白:java的向上和向下转型可以看成是类型的转换. ---------------- 版权声明:本文为CSDN博主「ldsh304」的原创文章,遵照CC 4.0 BY-SA版权协议,转载请附上 ...
- java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向 ...
最新文章
- springBoot之过滤器和拦截器的使用
- 从产品经理向人工智能产品经理进阶 | 机器学习必备知识
- 架构之:REST和HATEOAS
- 【最新合集】编译原理习题(含答案)_2程序设计语言及其文法_MOOC慕课 哈工大陈鄞
- CoreAnimation (CALayer 动画)
- linux显卡驱动未加载,Linux下无显卡驱动的解决办法
- 机器学习实战 基于_基于ScikitLearn、Keras和TensorFlow的机器学习实战:分类
- 格局再变?AWS CDN 落地中国
- performancepoint里面建立数据源的时候,总是发生以下的报警(转的)我也遇到了这个问题...
- hcia题库app有哪些?HCNA题库和考试内容一模一样吗?
- 数据结构之二叉树深度计算
- ftl有三种映射地址_SSD之FTL技术
- 国家电网与百度达成战略合作,在智慧能源领域掀起新基建热潮
- 《web安全原理分析与实践》
- 计算机中文件的分类,如何有效对电脑文件夹进行分类?
- 2020 11月8周记
- 方维P2P借贷网商业系统3.6.9源码 红色风格+蓝色风格
- java开发工具下载地址汇总
- 在制品和成本故障排除常用脚本
- 网络摄像头RTSP直播方案(三)
热门文章
- HDFS与Hive实战 + 滴滴出行数据分析
- jQuery插件Magnify放大镜实现javascript图片放大功能
- LoRa手持无线终端相比我们常用的工业PDA有哪些优势
- vbox虚拟机无法桥接网卡怎么办
- SuperMap iClient3D for WebGL教程- 淹没分析
- 开年纳新|天空卫士家族荣誉谱上再添多名新“成员”
- 几十个学生用免费优质网站
- 华中科技大学有计算机科学与技术学院导师,华中科技大学计算机科学与技术学院导师简介-徐鹏...
- hadoop问题集(1)
- d3js 实现水球图