java在实例化对象的时候,其对象所在的类的成员变量首先要初始化。调用顺序是
父类静态成员变量,父类静态代码块
子类静态成员变量,子类静态代码块
父类非静态变量,父类非静态代码块,父类构造函数,
子类非静态变量,子类非静态代码块,子类构造函数
父类的构造函数,子类的构造函数
java语言中变量的类型有成员变量、静态变量和局部变量。当类被实例化时,成员变量就会子啊内存中分配空间并初始化,直到这个实例化对象的生命周期结束,成员变量的生命周期才结束。被static修饰的成员变量被成为静态变量或全局变量,静态变量是是被所有实例所共享的,一个类被加载就会给类的静态变量分配存储空间。可以通过类名和变量名来访问静态变量。
package com.Scopes;
/**
* Created by Administrator on 2017/10/16.
*/
class Base{
static {
System.out.println("Base static BLOCK");
}
{
System.out.println("Base block");
}
public Base(){
System.out.println("Base constructor");
}
}
public class Scopes extends Base{
static{
System.out.println("Deried static block");
}
{
System.out.println("Deried block");
}
public Scopes(){
System.out.println("Deried construstor");
}
public static void main(String args[]){
new Scopes();
}
}
运行结果