(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/75530403冷血之心的博客)



向上转型:父类引用指向子类对象                             向下转型:子类引用指向父类对象

举例:Father是父类,Son是子类

Father f1 = new Son();   // 这就叫 upcasting (向上转型), 现在f1引用指向一个Son对象

Son s1 = (Son) f1;   // 这就叫 downcasting (向下转型),现在f1还是指向Son对象

举例:Father是父类,Son是子类

Father f2 = new Father();

Son s2 = (Son) f2;       // 编译不出错,运行时出错(除非子类和父类拥有相同的属性和方法),子类引用不能指向父类对象

向上转型:父类引用指向子类对象,将会丢失子类和父类中不一致的方法,并且父类引用调用的变量只能是父类中的。

举例:

class Person{private String name = "Person";int age=0;public void function() {System.out.println("this is person");}
}
public class Child extends Person{public String grade;int age=10;public void function() {System.out.println("this is child");}public void b1(){System.out.println("子类新方法");} //B类定义了自己的新方法@Testpublic  void test(){Person p = new Child();p.function();System.out.println(p.age);}
}

此时将输出:

“this is child”

0

并且我们是不能使用p.b1()的,编译错误,因为,此时该对象p已经失去了该方法。

向上转型的作用:

这里以父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。

public class Main{  public static void main(String[] args) {  dosleep(new Male());  dosleep(new Female());  }  public static void dosleep(Human h) {  h.sleep();  }
}
class Human {  public void sleep() {  System.out.println("Human sleep..");  }
}
class Male extends Human {  @Override  public void sleep() {  System.out.println("Male sleep..");  }
}
class Female extends Human {  @Override  public void sleep() {  System.out.println("Female sleep..");  }
}  

如果dosleep以子类对象为参数,则有多少个子类就需要写多少个函数。这也体现了JAVA的抽象编程思想。

如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~

本群给大家提供一个学习交流的平台,内设菜鸟Java管理员一枚、精通算法的金牌讲师一枚、Android管理员一枚、蓝牙BlueTooth管理员一枚、Web前端管理一枚以及C#管理一枚。欢迎大家进来交流技术。

Java向上转型和向下转型相关推荐

  1. 【Java挠头】继承、抽象、接口、多态、向上转型、向下转型等精妙干货

    –本文摘要–     1.本文的目标读者:是了解Java基础,且对面向对象概念有所了解,但是对Java中继承.抽象类.接口.多态等等概念搞不清的初学者.     2.本文的内容摘要:讲述Java中的一 ...

  2. 重新精读《Java 编程思想》系列之向上转型与向下转型

    前言 今天重读了一下向上转型与向下转型,有些新的体会,了解了向上转型的好处,及如何向下转型.在此分享给大家. 向上转型 向上转型是用来表现新类和基类之间的关系.在传统中,由导出类转型成基类,在继承图中 ...

  3. 第三次学JAVA再学不好就吃翔(part35)--多态向上转型和向下转型

    学习笔记,仅供参考 文章目录 面向对象 多态 多态向上转型和向下转型 多态的好处和弊端 面向对象 多态 多态向上转型和向下转型 我们首先通过以下代码复习一下自动类型提升和强制类型转换: class B ...

  4. Java转型(向上转型和向下转型)

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

  5. [JAVA]向上转型与向下转型

    要理解多态性,首先要知道什么是"向上转型"."向下转型". 对象的多态性:父子类对象的转换 **向上转型:**子类对象变为父类对象,语法: 父类 父类对象 = ...

  6. Java中的向上转型及向下转型

    我们都知道Java的三大特性:封装.继承.多态. Java中的向上转型及向下转型体现了Java中的继承性及多态性,所谓继承,不难理解,存在于子父类间,子类继承父类中不被私有化的属性和方法.而多态性,顾 ...

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

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

  8. JAVA中的向上转型和向下转型

    一.向上转型和向下转型 向上转型和向下转型是在JAVA继承操作中用到的东西,在讲到转型之前我们需要认识到继承过程中的对象类型转换,这种转换有两个特点:              1.这是继承过程中发生 ...

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

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

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

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

最新文章

  1. 几种检查调试CSS布局的有效方法
  2. SpringBoot实用小技巧之动态设置SpringBoot日志级别
  3. 高通安卓调试LCD几方面总结
  4. ACM入门之【线段树】
  5. 机器学习:使用numpy实现数据增强(Data Augmentation)
  6. 算术移位的规则及逻辑移动的规则
  7. leetcode - 543. 二叉树的直径
  8. 传真故障排除示例--网络环境存在丢包导致传真失败
  9. buck变换器设计matlab_在数字控制系统中实现LLC变换器的电流模式控制的思考
  10. 软件工程导论 01章软件工程学概述
  11. c语言编程跑马灯,走楼灯设计(C语言设计跑马灯程序)
  12. EXCEL 出错 8000401a
  13. python等比例压缩图片_python使用pil进行图像处理(等比例压缩、裁剪)实例代码
  14. 网易乐得数据库及运维分享会
  15. autocad2022版安装提示提示“The feature you are trying to use is on a network resource ...”失败解决办法
  16. 查看linux下oracle安装位置
  17. 隐私保护深度学习技术综述
  18. 事实劳动关系怎么认定
  19. WTD实验(lv9-day15)
  20. 英语语法长难句——简单句

热门文章

  1. 关于伺服调试接线问题的讲解
  2. Altium Designer、EAGLE、OrCAD、Proteus、KiCAD、LTspice、NI Multisim这些软件各有什么优缺点...
  3. java和vue的学生健康管理系统疫情打卡系统
  4. 漫谈HDR和色彩管理
  5. SOLIDWORKS免费培训 SW大型装配体模式课程
  6. 【智能路由器】让MT7620固件openwrt支持USB
  7. JAVA bouncycastle实现SM2算法(国密2)
  8. 简易双色球自动生成器
  9. php超小免杀大马_php最新php大马免杀过狗最小1kB吗?
  10. Qt的窗口拉伸QDockWidget,一个窗口变大,另一个窗口变小