向上类型转换:

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向上转型相关推荐

  1. java 向上转型_java向上转型和向下转型

    转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...

  2. java的向下转型_Java 向上/向下转型浅析

    基于java的继承,向上或者向下转型是一种常见的情景,在thinking in java对这一情况进行了详细说明,见以下例子: class Useful { public void f() {} pu ...

  3. java 泛型向下转型_Java向上转型和向下转型(附具体样例)

    Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { pu ...

  4. java 技术 管理_java技术转型产品或者项目管理,请大神指导?

    产品和项目管理是不同的发展路径,对于题主是转型产品还是项目管理,不妨回答以下几个问题 1.自己愿意朝哪个方向发展,是产品经理还是项目管理? 2.针对项目管理和产品经理可以做SWOT分析,来更清晰的了解 ...

  5. java向上和向下的区别_Java的向上和向下转型

    在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向 ...

  6. java 对象向上转型_JAVA对象向上转型和向下转型

    今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...

  7. java 向下转型运行时错误_Java向上转型和向下转型

    首先定义父类Animal,所有动物都有一个吃东西的方法:子类Dog还增加了一个叫的功能. public classAnimal {public voideat() { System.out.print ...

  8. java多态上转下_(转)java的多态(向上转型、向下转型)

    在我的明白:java的向上和向下转型可以看成是类型的转换. ---------------- 版权声明:本文为CSDN博主「ldsh304」的原创文章,遵照CC 4.0 BY-SA版权协议,转载请附上 ...

  9. java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例

    在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向 ...

最新文章

  1. springBoot之过滤器和拦截器的使用
  2. 从产品经理向人工智能产品经理进阶 | 机器学习必备知识
  3. 架构之:REST和HATEOAS
  4. 【最新合集】编译原理习题(含答案)_2程序设计语言及其文法_MOOC慕课 哈工大陈鄞
  5. CoreAnimation (CALayer 动画)
  6. linux显卡驱动未加载,Linux下无显卡驱动的解决办法
  7. 机器学习实战 基于_基于ScikitLearn、Keras和TensorFlow的机器学习实战:分类
  8. 格局再变?AWS CDN 落地中国
  9. performancepoint里面建立数据源的时候,总是发生以下的报警(转的)我也遇到了这个问题...
  10. hcia题库app有哪些?HCNA题库和考试内容一模一样吗?
  11. 数据结构之二叉树深度计算
  12. ftl有三种映射地址_SSD之FTL技术
  13. 国家电网与百度达成战略合作,在智慧能源领域掀起新基建热潮
  14. 《web安全原理分析与实践》
  15. 计算机中文件的分类,如何有效对电脑文件夹进行分类?
  16. 2020 11月8周记
  17. 方维P2P借贷网商业系统3.6.9源码 红色风格+蓝色风格
  18. java开发工具下载地址汇总
  19. 在制品和成本故障排除常用脚本
  20. 网络摄像头RTSP直播方案(三)

热门文章

  1. HDFS与Hive实战 + 滴滴出行数据分析
  2. jQuery插件Magnify放大镜实现javascript图片放大功能
  3. LoRa手持无线终端相比我们常用的工业PDA有哪些优势
  4. vbox虚拟机无法桥接网卡怎么办
  5. SuperMap iClient3D for WebGL教程- 淹没分析
  6. 开年纳新|天空卫士家族荣誉谱上再添多名新“成员”
  7. 几十个学生用免费优质网站
  8. 华中科技大学有计算机科学与技术学院导师,华中科技大学计算机科学与技术学院导师简介-徐鹏...
  9. hadoop问题集(1)
  10. d3js 实现水球图