首页 > 编程语言 >java中的多态

java中的多态

时间:2022-12-22 12:23:32浏览次数:47  
标签:java parent Parent child 多态 printValue myValue Child

多态中,编译看左边,运行看右边

不多逼逼,直接上代码。

代码:(我觉得我们老师给的代码好归好,但不太容易理解,我就私自改了点,顺眼多了)

class Parent{
public int myValue=100;//Parent类型的myValue=100;
public void printValue(){
System.out.println("Parent.printvalue(),myValue="+myValue);//Parent类型的成员函数
}
}

class Child extends Parent{
public int myValue=200;//Child类型的myValue=200;
public void printValue(){
System.out.println("Child.printValue(),myValue="+myValue+" "+super.myValue);//Child类型的成员函数
}
}


public class ParentChildTest{//无用的一行
public static void main(String[] args){//以下为主函数

Parent parent=new Parent();//向空间用Parent的构造函数Parent()申请了一个堆内存空间,并将地址返回给类型为Parent的parent
parent.printValue();//调用类型为Parent的地址parent的实例对象的构造函数printValue()


Child child=new Child();//向空间用Child的构造函数Child()申请了一个堆内存空间,并将地址返回给类型为Child的child
child.printValue();//调用类型为Child的地址child的实例对象的构造函数printValue()

parent=child;//将类型为Child的地址child赋值给类型为Parent的parent,注意!parent为,类型为Parent的child地址
parent.printValue();//调用类型为Parent的地址child的实例对象的构造函数printValue()

parent.myValue++;//注意!由于类型为Parent类型,访问child地址,++作用于属于Parent类型的myValue上,此时Parent的myValue=101,而Child的myValue=200
parent.printValue();//注意!由于parent此时存储的地址为child,因此Parent的printValue已经被覆盖,使用的是Child的printValue

((Child)parent).myValue++;/*还要注意!此时parent的类型由原来的Parent类型强制转换为Child类型,再去访问child时,++作用于属于Child的myValue上,此时Parent的myValue=101,而Child的myValue=201*/
parent.printValue();//再次访问parent中的child地址,输出当前Parent的myValue与Child的myValue
}
}

输出:

标签:java,parent,Parent,child,多态,printValue,myValue,Child
From: https://www.cnblogs.com/2351920019xin/p/16998130.html

相关文章

  • JavaScript Date 对象知识点复习
    复制单个代码控制台运行看结果从Date对象返回一个月中的某一天(1~31)。console.log("newDate().getDate()"-----------,newDate().getDate())从Date对象返......
  • Java学习笔记6
    1.类和对象1.1类和对象​ 客观存在的事物皆为对象,所以我们也常常说万物皆对象。类:类的理解类是对现实生活中一类具有共同属性和行为的事物的抽象类是对象的数据......
  • 如何通过Java提取PDF中的图片
    PDF文档格式具有固定的文档布局,可以避免他人对其进行随意更改。但这也在一定程度上影响了我们对PDF的操作,例如,当我们需要将PDF文档中的图片用于其他地方时。​​FreeSpire.......
  • 如何通过Java提取PDF中的图片
    PDF文档格式具有固定的文档布局,可以避免他人对其进行随意更改。但这也在一定程度上影响了我们对PDF的操作,例如,当我们需要将PDF文档中的图片用于其他地方时。FreeSpire.PDF......
  • java 查看对象占用内存大小(代码库)
    <dependency><groupId>com.carrotsearch</groupId><artifactId>java-sizeof</artifactId><version>0.0.5</version></dependency>importcom.carrotse......
  • Java学习笔记5
    1.方法概述概念​ 方法(method)是程序中最小的执行单元。注意:方法必须先创建才可以使用,该过程称为方法的定义。方法创建后并不是直接可以运行的,进行方法的调用才会执......
  • 多个NX版本实现java调用
    设置环境变量只能实现一个NX版本的调用如果一台电脑上有几个NX版本就要把环境变量删了单独去设置 找到安装各个NX版本安装目录下的ugii文件夹里的ugii_env.dat文件#NX......
  • 教你用Java实现动态调色板
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用Java编程实战案例,做一个动态调色板。案例界面会出现三个滑动组块以及对应的数值,通过移动滑块可以......
  • Java 中 int 和 Integer 的区别,为什么要有包装类?
    前言Java是一门强类型语言,所以在Java中,所有的数据都必须有自己的数据类型,这就像“山姆商店”的会员制一样,你是会员才能进入,在Java中也是如此,每一个数据必须有自己的......
  • MyEclipse技术全面解析——不脱离Java IDE的Maven项目管理
    从JavaIDE内部管理项目和构建,标准的项目结构、简化的POM编辑和内置于MyEclipse菜单中的启动命令使Maven项目管理触手可及。MyEclipsev2022.1.0正式版下载通过单击管理M......