java继承执行子类输出顺序_JAVA继承顺序

当使用继承这个特性时,程序是如何执行的;

继承的初始化顺序

1.初始化父类再初始子类

2.先执行初始化对象中属性,再执行构造方法中的初始化

当使用继承这个特性时,程序是如何执行的呢,也就是说我们需要关注继承的初始化顺序,当我们创造一个对象的时候,所执行的构造方法就相当于初始化一个对象,所以如果我们需要证明初始化一个对象的时候,它是不是会先初始化父类,然后初始化子类

初始化其实就相当于执行类的构造方法,所以我们只需要重写构造方法,在类的构造方法中输出一句话,看它到底是什么时候输出的,就知道他们的执行顺序了

举个例子:

Animal类:

package com.test;

public class Animal {

public int age;

public String name;

public void eat(){

System.out.println("动物是可以吃东西的");

//这里的父类只是描述动物可以吃东西

}

public Animal(){

System.out.println("Animal类执行了");

}

}

Dog类:

package com.test;

public class Dog extends Animal{

public Dog(){

System.out.println("Dog类执行了");

//我们在Dog类定义一个无参的构造方法

}

}

主函数Initail类:

package com.test;

public class InitailClass {

public static void main(String[] args) {

// TODO Auto-generated method stub

Dog d = new Dog();//主函数里只是创建了子类对象

d.age = 10;

d.name = "xiaotian";

d.eat();

}

}

我们看一下它的执行顺序:

运行结果为:

可以看出仅仅是创建了子类对象,但它是先执行了父类的构造方法,然后执行子类的构造方法.我们就能证明当我们创建对象的时候,它是优先创建父类对象,然后创建子类对象

如果对象中有属性,属性和我们的构造方法在初始化的时候哪一个先执行呢

例子如下:

Animal类:

package com.test;

public class Animal {

public int age=10;//为属性赋初值

public String name;

public void eat(){

System.out.println("动物是可以吃东西的");

//这里的父类只是描述动物可以吃东西

}

public Animal(){

System.out.println("Animal类执行了");

age = 20;//在执行构造方法的时候再为age赋一个值

//如果在程序中输出这个值,这个值其实应该是后一个的值,因为后面赋的值会把前面的覆盖掉

}

}

主函数Initail类:

package com.test;

public class InitailClass {

public static void main(String[] args) {

// TODO Auto-generated method stub

//创建父类对象animal

Animal animal = new Animal();

System.out.println("animal age:"+animal.age);

Dog d = new Dog();//主函数里只是创建了子类对象

d.age = 10;

d.name = "xiaotian";

d.eat();

}

}

运行结果为:

显然构造方法的初始化方式是后执行的,所以属性的初始化是先执行的:

总结一下:

当我们创建一个子类对象的时候,先创建父类的属性进行初始化,然后执行父类的构造方法,接着执行子类的属性进行初始化,最后执行子类的构造方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

空字符串字符串不为空_当字符串为空但不为空时

空字符串字符串不为空介绍 我团队中的一名初级程序员遇到了一个有趣的错误。 我已经不止一次看到它的症状。 这篇文章是寻找什么以及如何在将来防止它。 我还将探讨该问题的不同解决方案。 病征 有问题的代码看起来做得不错。: if(trouble ! null && !tro…

网络通信协议-TCP/IP模型实战

今晚课题长按图片【识别图中的二维码】

java家具网站需求分析_基于jsp的家具销售-JavaEE实现家具销售 - java项目源码

基于jspservletpojomysql实现一个javaee/javaweb的家具销售, 该项目可用各类java课程设计大作业中, 家具销售的系统架构分为前后台两部分, 最终实现在线上进行家具销售各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类家具销售相关的实体进行管理。该家具…

hazelcast入门教程_Hazelcast入门指南第2部分

hazelcast入门教程本文是我开始使用Hazelcast (分布式内存数据库)的系列文章的继续。 如果尚未阅读第一篇文章,请单击此处 。 分布式馆藏 Hazelcast具有许多可用于存储数据的分布式集合。 以下是它们的列表: 清单 我设置 队列…

C/C++深入剖析指针机制与内存动态管理

今晚课题【长按识别图中二维码】

jedis watch Java_jedis操作redis的几种常见方式总结

Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。前言Redis是一个著…

C/C++打造Windows岁月留声机

今晚课题【长按识别图中二维码】

hazelcast入门教程_Hazelcast入门指南第1部分

hazelcast入门教程介绍 我将在Hazelcast上做一个系列。 我从Twitter了解了该产品。 他们决定跟随我,经过对他们所做工作的研究后,我决定跟随他们。 我在推特上说,Hazelcast将是分布式密码破解者的重要Struts。 这引起了一些兴趣,我…

java演出厅选票_高仿猫眼电影选座(选票)模块-b

上图看效果先:1)画座位图其实不是很难一般数据都会给坐标,将坐标对应座位画出来就可以了,主要是开场动画要设置默认大小,还有座位图的数量也不是固定的,所以在初始化座位图的时侯就默认算出了整个座位图的大小-(instan…

input发送a.jax_Java EE 7 / JAX-RS 2.0 – REST上的CORS

input发送a.jaxJava EE REST应用程序在开箱即用的开发机器上通常可以很好地运行,在该机器上,所有服务器端资源和客户端UI都指向“ localhost”或127.0.0.1。 但是,当涉及跨域部署时(当REST客户端不再与托管REST API的服务器位于同…

用C/C++开发《Photoshop》图像处理软件

今晚课题【长按识别图中二维码】

javaone_代理的JavaOne 2014观察

javaone我今年无法参加JavaOne,但很高兴看到一些在线资源涵盖了JavaOne 2014的活动。在本文中,我总结了JavaOne 2014的一些观察结果,并提供了指向提供这些观察结果的参考的链接。提供有关这些观察的更多背景细节。 列出的观察结果没有特别的顺…

java怎么兼容switch_java – Switch语句给出了不兼容类型错误

我正在尝试编译,我收到此错误:enigma/Rotor.java:30: incompatible types found : java.lang.String required: int switch(name){1 error为什么我收到此错误?我如何解决它?它在包中,我似乎无法弄明白.这是代码:String label;Roto…

基于java的心理健康_基于SSM的JAVA心理健康网

今天记录的项目是心理健康网的规划与设计,这个项目是这么回事:心理健康是关系到人才质量的重要问题。随着网络时代的发展,传统的大学生心理健康教育教学方式和课程资源远不能解决当代大学生的心理问题。本文通过对学生心理健康网的规划与设计进行研究。首…

C/C++打造《百万级人脸识别系统》

今晚课题【长按识别图中二维码】

rhq监控软件_RHQ指标的WildFly子系统

rhq监控软件对于RHQ-Metrics,我已经开始为WildFly 8编写一个子系统,该子系统能够在WildFly内收集度量,然后以固定的时间间隔(当前为每分钟)将其发送到RHQ-Metrics服务器。 下一张图是该发件人连续运行1.5天时结果的可…

java中content啥意思_JSTL标签中的body-content标签体内容输出格式的介绍

我们在JSTL标签中看到“JSP”这种类型的定义,但是不知道它是什么意思,其实它的意思就是定义了一个JSTL标签内部是否允许使用JSP表达式,先来了解什么是JSTL标签体,请看代码://中间即为JSTL标签体再来看看什么是jsp表达式…

打造最强加密工具之《绝密信息传递》

今晚课题【长按识别图中二维码】

jooq sql_用jOOQ用Java编写SQL

jooq sqljOOQ是“数据库优先”类型的安全SQL API,使您可以直观地用Java编写SQL,就像Java编译器本身支持SQL语言一样。 所有数据库模式,表,列,过程和其他对象均作为Java对象提供,可以直接在jOOQ SQL API中使…