java向上转型和向下转型该如何理解

相信许多学习java的朋友一定会遇到这样的情况,一个被new出来的类对象,赋值给了自己的父类对象,这个是什么情况哪?该如何理解。在java里这个叫向上转型。还有一种情况的向上转型,new出来一个类的对象赋值给了此类实现的一个接口,我称之为瘦身,只不过,接口的向上转型和类的向上转型是有区别的。
在这里,我们只讨论类和接口的转型。同样向下转型也有两种,一种是new出来的类对象赋值给自己的子类对象,另一种情况是接口变量赋值给实现此接口的类对象,我称之为增肥。下面就来通过程序看看这四种转型是怎样操作的以及转型后访问数据的情况。

一、类的向上转型和向下转型

  • 01

    首先要编写测试程序,按如下的目录结构,创建类。

  • 02

    Animal.java。此类是基类,Cat类继承此类。此类有一个成员变量head和一个成员方法getHead()。方法返回head的值。

  • 03

    Cat.java。此类是Animal的子类,Cat类重新添加了一个成员变量eyes和一个成员方法getEyes()。方法返回eyes的值。

  • 04

    testClass.java。这个是我们的测试类。此时我们就来分析一下类的向上转型和向下转型。 向上转型:可以看出把Cat()的对象赋值给naimal时,不再有用getEyes()方法,此方法是Cat中的方法,而Animal类中无此方法。这说明animl对象发生了“瘦身”。 向下转型:这里要注意一点,向下转型是你向上转型后才能执行的操作。所以把转型后的animal赋值给cat_s,此时却发现cat_s对象“增肥”了,不仅能访问Animal类成员,还能访问Cat中新增的成员。

二、接口的向上转型和向下转型

  • 01

    编写测试程序IAnimal.java接口。此接口有一个未实现的方法sing();

  • 02

    编写Tiger.java类,实现IAnimal类,并新增成员变量head和成员方法getHead(),方法打印head的值。

  • 03

    编写测试程序testInterface.java。此时我们来分析一下接口的向上转型和向下转型。 向上转型:可以看到new出来的Tiger对象赋值给了IAnimal接口变量,此时animal只能访问接口的方法sing(),而不能访问Tiger类中新增的成员方法。 向下转型:把animal赋值给了Tiger类对象后,发现tiger既可以访问接口方法,也可以访问Tiger类中新增的方法。

  • 04

    接下来我们来看一下,在接口转型后animal.sing()的输出结果,“老虎在吼叫”,说明,虽然"瘦身"了,但是接口变量animal调用的还是实现了此接口的类(Tiger)的方法。

(0)

相关推荐

  • 跨职业转型 | C端运营转型B端交互

    笔者在学生时代的专业是工业设计产品方向,因机缘巧合,当初校招入职A厂时选择了产品运营岗位: 由于每家公司的业务驱动有侧重,A厂的运营较其他公司而言更为强势,所以也更容易接触业务前线以及了解整个业务运转 ...

  • java中的多态是什么,怎么使用

    有时候我们在使用java编程的时候,想知道多态是什么,怎么使用,下面来分享一下方法 操作方法 01 第一步我们首先需要了解多态是指不同类的对象对同一消息作出响应,也可以理解为多态是一个接口,不同实例进 ...

  • Excel中如何对数值向上向下舍入和四舍五入?

    在Excel使用中,有时需要根据指定的位数向上舍入或者向下舍入,有时还需要根据位数四舍五入,那么该如何操作呢? 操作方法 01 在EXCEL中对指定位置的数据舍入取整中,经常用到的函数有:ROUNDU ...

  • windows10下java的安装教程

    java工具在大多数情况下有可能用不上,不过也有一些环境的搭建可能是基于java运行的,这就需要安装java了 操作方法 01 首先,我们可能需要查看一下电脑的配置信息,单击开始按钮选择系统,一般我们 ...

  • 传统企业转型O2O六大核心

    传统企业为什么要进行互联网转型?"互联网+"企业到底该从哪里入手?"互联网+"企业,怎么"+"?为什么转型的焦点都在电商方面?"互 ...

  • Java常见异常和错误

    总结JAVA常见的异常和错误. 操作方法 01 1. 在某一路径下执行编译好的class文件出错. 异常如下: E:\liwy>java Test98 Exception in thread & ...

  • Linux下ftp服务详细配置-vsftp(具体步骤)

    首先要安装linux下的vsftp软件包。 rpm -qa|gerp vsftpd //查找vsftpd有没有安装 如果没有安装就 vsftpd-2.0.1-5.i386.rpm (在第一张光盘) 在 ...

  • Windows下JBOSS安装配置图文教程

    JBOSS安装与配置搭建本地项目环境 什么是JBOSS? JBOSS是EJB的服务器,就像Tomcat是JSP服务器一样,就是服务器的一种。 环境搭建如下: 一:首先安装JDK,配置环境变量(PATH ...

  • Win7下语音控制电脑攻略

    在Windows 7中,有一个语音识别功能可以让我们彻底抛开鼠标和键盘,只用语音控制电脑,完成编辑文档、使用软件等一系列操作。 先练下基本功:玩声控 磨刀不误砍柴工 在Win7当中,语音识别已经成为一 ...