Java组合与继承生成的类中构造函数的执行顺序
【程序实例】
import java.util.*;
class Meal{
Meal() {
System.out.println("Meal Constructor");
}
}
class Bread{
Bread(){
System.out.println("Bread Constructor");
}
}
class Cheese{
Cheese(){
System.out.println("Cheese Constructor");
}
}
class Lettuce{
Lettuce(){
System.out.println("Lettuce Constructor");
}
}
class Lunch extends Meal{
Lunch(){
System.out.println("Lunch Constructor");
}
}
class PortableLunch extends Lunch{
PortableLunch(){
System.out.println("PortableLunch Constructor");
}
}
public class ZuheJichengOrder extends PortableLunch{
private Bread b=new Bread();
private Cheese c=new Cheese();
private Lettuce l=new Lettuce();
public ZuheJichengOrder(){
System.out.println("ZuheJichengOrder Constructor");
}
public static void main(String[] args){
new ZuheJichengOrder();
}
}
【运行结果】
Meal Constructor
Lunch Constructor
PortableLunch Constructor
Bread Constructor
Cheese Constructor
Lettuce Constructor
ZuheJichengOrder Constructor
【结果分析】
从程序的执行结果可以看出,构造器的执行顺序是从根部的基类开始,一直到距离本类最近的父类,然后对本类中的数据成员进行初始化,最后执行本类的构造器的函数体。
总结:
复杂对象调用构造器的顺序为:
(1)调用基类构造器。这个步骤会不断反复递归执行下去,首先是构造这中层次结构的根,然后是下一层导出类,等等,直到最底层的导出类;
(2)按照声明顺序调用成员的初始化方法;
(3)调用导出类构造器的主体。
Java组合与继承生成的类中构造函数的执行顺序的更多相关文章
- 2018.11.20-day22 类中代码的执行顺序&组合
1.类中代码的执行顺序 2.组合
- C#类中方法的执行顺序
有些中级开发小伙伴还是搞不太明白在继承父类以及不同场景实例化的情况下,父类和子类的各种方法的执行顺序到底是什么,下面通过场景的举例来重新认识下方法的执行顺序: (下面内容涉及到了C#中的继承,构造函数 ...
- Java类中代码的执行顺序 静态代码块>构造代码块>构造方法
一:静态代码块 注意是代码块,不是静态函数.函数要调用才执行,代码块加载就执行,一般是静态变量的声明与初始化.被static修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 ...
- Java中,类与类,类中的代码执行顺序
代码的执行顺序如下: 1.一个类的静态代码块.构造代码块.构造方法的执行流程为: 静态代码块 > 构造代码块 > 构造方法 2.静态的内容是随着类的加载而加载,静态代码块的内容会优先执行 ...
- java类中属性优先执行顺序
1.父类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次) 2 .子类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次) 3. 父类属性对象初始化 4. ...
- “全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- mysql 中sql的执行顺序
文章转自 https://www.cnblogs.com/annsshadow/p/5037667.html https://www.cnblogs.com/yyjie/p/7788428.html ...
- hadoop27---netty中handler的执行顺序
Netty是基于Java NIO的网络应用框架. Netty是一个NIO client-server(客户端服务器)框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议.Netty提供了一 ...
- 7.Netty中 handler 的执行顺序
1.Netty中handler的执行顺序 Handler在Netty中,无疑占据着非常重要的地位.Handler与Servlet中的filter很像,通过Handler可以完成通讯报文的解码编码.拦截 ...
随机推荐
- Java多线程——线程池
系统启动一个新线程的成本是比较高的,因为它涉及到与操作系统的交互.在这种情况下,使用线程池可以很好的提供性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池. 与数据库连接池类似 ...
- Html.Action、html.ActionLink与Url.Action的区别
1.html.ActionLink返回的指向指定controller.指定action的超链接标签<a>标签.如果没有指定controller,则默认为本页面对应的Controller. ...
- cookie有效期到了后,是由浏览器还是由系统还删除的
Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie).而还有一些Cookie在用户退出 ...
- ASP.Net中的编码与解码
当javascript传递的参数中有中文时,服务端获得的将是乱码,此时需要用到编码和解码 javascript中编码与解码的三种方法 escape方法返回一个可在所有计算机上读取的编码 String ...
- 最全的ORACLE-SQL笔记
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unloc ...
- Dev-C++程序正确闪退问题
只需要在主函数最后一句语句上面加一句getchar();即可
- Ubuntu 安装之后的配置博文总结
由于频繁地在各种机器上给别人安装ubuntu,每次安装之后都需要进行一些配置,现在以ubuntu12.04为例,就他人的一些配置博文总结如下: 1. Ubuntu安装中文输入法 http://www. ...
- HDU 4614 (13年多校第二场1004)裸线段树
题意:给你N个花瓶,编号是0 到 N - 1 ,初始状态花瓶是空的,每个花瓶最多插一朵花. 然后有2个操作. 操作1,a b c ,往在a位置后面(包括a)插b朵花,输出插入的首位置和末位置. 操作 ...
- js和jquery中有关透明度操作的问题
在日常开发的网站中,常常会用到设置透明度问题,最简单的就是图片的淡入淡出效果.下面我介绍一下在原生js和jQuery中设置透明度的相关问题和注意点: 1 透明度样式设置 透明度在IE浏览器 ...
- Thinkphp 模版
1.显示模版 在Home/Controller/MainController.class.php中写一个方法来显示对应的模版 function text() { //变量输出 $this->as ...