java初始化顺序

转载 2012年03月22日 22:44:59

1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
4. 父类构造方法
5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
6. 子类构造方法

 

public abstract class Base { 
//5、初始化父类的非静态代码 
public int age = getNumber(100); 
// 静态成员变量和静态初始化块级别相同 所以按照在代码中的顺序依次执行 
// 1、初始化父 静态成员变量 static int sage 
static int sage = getNumber(50); 
// 2、初始化父 静态初始化块 static 
static { 
System.out.println("base static block"); 
} 
{ 
System.out.println("base nonstatic block"); 
} 
//6、初始化父类构造函数 
Base() 

{ 
System.out.println(age); 
System.out.println("base start"); 
draw();// 会调用子类覆盖后的方法 
System.out.println("base end"); 

} 

static int getNumber(int base) { 
System.out.println("base.getNumber int" + base); 
return base; 
} 

public void draw() { 
System.out.println("base.draw"); 
} 

} 


public class InitializeOrder extends Base { 
//7、初始化子类的非静态代码 
public int age = getNumber(1001); 
//8、初始化子类的非静态代码 
private int _radius = getNumber(10); 
//3、初始化子 静态成员变量 static int sage 
static int sage = getNumber(250); 
//4、初始化子 静态初始化块 static 
static { 
System.out.println("subclass static block"); 
} 
{ 
System.out.println("subclass nonstatic block"); 
} 
//9、初始化子类构造函数 
InitializeOrder(int radius) { 
_radius = radius; 
System.out.println(age); 
System.out.println("initializeOrder initialized"); 
} 

public void draw() { 
System.out.println("initializeOrder.draw " + _radius); 
} 

/** */ 
/** 
* @param args 
*/ 
public static void main(String[] args) { 

    new InitializeOrder(1000); 
   } 

} 


 

Java基础总结之类与对象的初始化顺序

Java
  • crazyf2015
  • crazyf2015
  • 2015年06月27日 21:51
  • 2175

Java类的变量初始化顺序

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台...
  • meegomeego
  • meegomeego
  • 2015年08月05日 12:14
  • 1621

【深入理解JVM】:Java类继承关系中的初始化顺序

Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。非继承关系中的初始化顺序对于非继承关系,主类Initi...
  • u011080472
  • u011080472
  • 2016年05月06日 11:19
  • 4535

Java中初始块的执行顺序

在Java中除了使用构造器类对单个对象进行初始化操作外,我们还可以通过初始化块来实现。在一个类中可以有多个初始化块,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。使...
  • u010695218
  • u010695218
  • 2015年03月12日 18:59
  • 963

Java类的加载和初始化顺序分析

不再一一叙述java中的各种定义和规定, 这里就是举了两个例子,详细阐述,java代码运行时,成员变量和构造函数的加载和执行顺序。 package com.gt.world.oa.aaa;...
  • haorengoodman
  • haorengoodman
  • 2014年04月03日 13:58
  • 3134

java继承中初始化的顺序

java中子类继承了父类,其初始化的顺序是: 首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面的静态代码块里面的内容;当父类的静态代码块里面的内容执行完毕后,接着去执行子类里面的静态代码块...
  • long636
  • long636
  • 2015年11月28日 21:18
  • 1055

JAVA中继承时的初始化顺序

我们都知道继承是JAVA面向对象中的一个很重要的特性。那么你有没有思考过当我们使用继承这个特性的时候,程序是如何执行的呢?也就是说,继承的初始化顺序到底是怎么样的。接下来我就要用eclipse来试验一...
  • baidu_28312631
  • baidu_28312631
  • 2015年05月23日 15:23
  • 1130

Java中成员变量的初始化顺序浅析

在Java中,所有的变量在使用之前都得到恰当的初始化,对于方法的局部变量,如果在使用前没有初始化,编译时系统会提示错误而无法继续编译;对于成员变量,系统会提供默认值,对于基本类型,默认置为0,引用类型...
  • abc13526222160
  • abc13526222160
  • 2016年10月06日 15:37
  • 527

Java程序初始化的顺序是怎样的。

在java语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,当所有成员完成初始化后,才会调用对象所在类的构造函数创建对象。 Java程序的初始化一般遵循3个原则(优先级依次递减):(...
  • u013274055
  • u013274055
  • 2016年12月16日 22:56
  • 1037

java中父类和子类初始化顺序

顺序 1. 父类中静态成员变量和静态代码块 2. 子类中静态成员变量和静态代码块 3. 父类中普通成员变量和代码块,父类的构造函数 4. 子类中普通成员变量和代码块,子类的构造函数 其中“和”字两...
  • yuxin6866
  • yuxin6866
  • 2016年11月09日 23:39
  • 1602
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java初始化顺序
举报原因:
原因补充:

(最多只允许输入30个字)