(尊重劳动成果,转载请注明出处: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. 中柏平板触摸驱动_工业平板电脑触摸屏种类及故障解决办法,赶紧收藏起来
  2. 计算机考到贴吧的试题,2014年全国计算机二级VB上机考试试题七
  3. iOS中下载大型文件的原理解析二
  4. mysql从多个表查询数据类型_MySQL 之 多表查询
  5. Java父类强制转换子类原则
  6. CreateThread和_beginthreadex的区别
  7. 好难啊……一个 try-catch 问出这么多花样
  8. Scala官网下载不下来问题-已解决
  9. 程序员面试金典——18.12最大和子矩阵
  10. activity finish后没有destroy_Activity 基础知识点
  11. 用excel和python做数据分析的优缺点
  12. 谷歌高级软件工程师的一天
  13. Maven依赖冲突问题解决方案
  14. 求一款快捷回复工具聊天辅助软件手机版(聊天微快聊回复助手)
  15. [agc015f]Kenus the Ancient Greek
  16. 域格4G模块TTS语音使用方法
  17. APP - 查询名下微信实名账户(可注销微信封号账户支付功能)
  18. 古人对梦的解释_中国古代对梦的解释-精选文档
  19. 跨境电商平台大全,总有一个适合你
  20. 【GCN-RS】多行为推荐:Multi-behavior Recommendation with Graph Convolutional Networks (SIGIR‘20)

热门文章

  1. 强力删除.dll恶意文件,如360base.dll
  2. apt-get软件管理工具(软件安装、重装、卸载)
  3. 自然语言处理(NLP)学习笔记——HMM与CRF模型
  4. Linux——终端常用指令
  5. MacOS搭建esp32开发环境排坑记
  6. 计算机专业考研参考......
  7. java socket 详解
  8. TCP/IP 网络通信协议 之 OSI 七层模型
  9. 薛定谔软件教程--配体准备(3)
  10. mysql 远程登陆设置_mysql远程登陆设置