Java: 基类、子类、构造函数、程序块的初始化顺序
初始化顺序
- 基类static block
- 子类static block
- 基类non-static block
- 子类non-static block
- 基类constructor
- 子类constructor
示例代码
public class Main {
public static void main(String[] args) throws Exception {
new Train();
System.out.println("FINISH!");
}
}
class Traffic {
public Traffic() {
System.out.println("Traffic constructor");
}
{
System.out.println("Traffic non-static block");
}
static {
System.out.println("Traffic static block");
}
}
class Train extends Traffic {
public Train() {
System.out.println("Train constructor");
}
static {
System.out.println("Train static block");
}
{
System.out.println("Train non-static block");
}
}
Traffic static block
Train static block
Traffic non-static block
Traffic constructor
Train non-static block
Train constructor
FINISH!
static成员的forward reference限制
- 记住这句话:Forward reference is not allowed on the right side of an assignment.
Java: 基类、子类、构造函数、程序块的初始化顺序的更多相关文章
- 正确理解Widget::Widget(QWidget *parent) :QWidget(parent)这句话(初始化列表中无法直接初始化基类的数据成员,所以你需要在列表中指定基类的构造函数)
最近有点忙,先发一篇我公众号的文章,以下是原文. /********原文********/ 最近很多学习Qt的小伙伴在我的微信公众号私信我,该如何理解下面段代码的第二行QWidget(parent) ...
- Java基类和派生类
背景:对基类和派生类有更清晰的认识. 从外部看来,派生类是一个与基类具有相同接口的新类,或许还会有一些额外的的方法和域 .但继承并不仅仅是类的复用.当创建了一个派生类的对象时,该类包含了一个基类的子对 ...
- C++-什么时候需要在类的构造函数中使用初始化列表
1,如果基类没有default构造函数,则意味着其不能自己初始化.如果其被派生,派生类的构造函数要负责调用基类的构造函数,并传递给它需要的参数.下例中Base 2,如果类成员没有默认构造函数.下例中E ...
- Java类继承关系中的初始化顺序
Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类Ini ...
- java类的加载以及初始化顺序
类的加载和初始化的了解对于我们对编程的理解有很大帮助,最近在看类的记载方面的问题.从网上查阅了若干文章,现总结如下: 我们通过一段代码来了解类加载和初始化的顺序: package com.classl ...
- Java:类的构造函数
类的构造函数 类的构造函数特点: 1. 构造函数也称为构造方法,构造函数名和类名相同. 2. 构造函数不能有返回值,也不能用void声明. 3. 构造函数可以有参数,也可以无参数,在一个类 ...
- 基类子类在Qt信号量机制下的思考
背景知识: 基类 superClass class superClass { public: superClass() { std::string m = "superClass() &qu ...
- c++派生类中构造函数和析构函数执行顺序、判断对象类型、抽象类、虚函数
一. 代码: 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include&l ...
- 【深入理解JVM】:Java类继承关系中的初始化顺序
尝试着仔细阅读thinking in java 看到一篇很好的文章http://blog.csdn.net/u011080472/article/details/51330114
随机推荐
- FAQ unzip无法解压文件
[root@TEST144239 tmp]# unzip linx64_11gR2_database_1of2.zipArchive: linx64_11gR2_database_1of2.zipw ...
- Neutron LBaaS Service(2)—— Neutron Services Insertion Model
Service Insertion Service Insertion是Neutron中实现L4/L7层服务的框架.Neutron以前只有一级插件结构用于实现各种L2层技术(如LinuxBridge, ...
- URL地址中的转义符
如果在XML里面存储URL地址可能涉及到转义符的问题 WEB开发中通过问号(?)方式在浏览器地址栏中传值时.浏览器是通过“&”来区分问号后的参数个数的. 如果出现传值参数中带有“&”时 ...
- IRedisClient 常用方法说明
事实上,IRedisClient里面的很多方法,其实就是Redis的命令名.只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这 ...
- bzoj1382: [Baltic2001]Mars Maps
Description 给出N个矩形,N<=10000.其坐标不超过10^9.求其面积并 Input 先给出一个数字N,代表有N个矩形. 接下来N行,每行四个数,代表矩形的坐标. Output ...
- mongoVUE对mongodb常用的基础操作
一. 连接mongodb服务端: 1. 双击mongoVUE,进入如下图所示界面: 2. 点击上图中的“+”,出现如下图,输入要连接的mongodb服务器的ip. ...
- 黄聪:如何开启IIS7以上的“IIS6管理兼容性”
护卫神PHP套件的安装,需要开启“IIS6管理兼容性”, 那么,如何开启IIS7.IIS7.5.IIS8.0的IIS6兼容模式呢? 设置的时候,请参照如下截图:
- DISPOSE_ON_CLOSE 和 EXIT_ON_CLOSE 的区别
If you have several JFrames open and you close one that has EXIT_ON_CLOSE it will close all the JFra ...
- IGS_学习笔记06_IREP发布客户化集成接口为Web Service(案例)
2015-01-03 Created By BaoXinjian
- Workflow_工作流发送Document和Form链接的实现(案例)
2014-06-01 Created By BaoXinjian