您的位置:首页 > 编程语言 > Java开发

关于JAVA类的初始化顺序

2015-09-05 18:00 399 查看


 JAVA中的初始化由以下几部分组成:属性,方法,static块,非static块,构造方法。以下给出一个测试程序:

public class Test {

 public static void main(String[] args) {

  new Student();

 }

}
class Person {

 static int age = 1;

 public static void f1() {

  System.out.println("Person function()");

 }

 static {

  f1();

  System.out.println("Age = " + age + " Static Person");

 }

 

 public Person() {

  System.out.println("Age = " + age + " Construct Person");

 }

 

 {

  System.out.println("Age = " + age + " Non-Static Person");

 }

}
class Student extends Person {

 static String name = "lisi";

 public static void f2() {

  System.out.println("Student function()");

 }

 static {

  f2();

  System.out.println("Name = " + name + " Age = " + age + " Static Student");

 }

 

 public Student() {

  System.out.println("Name = " + name + " Age = " + age + " Construct Student");

 }

 

 {

  System.out.println("Name = " + name + " Age = " + age + " Non-static Student");

 }



以上代码中,除了主类外,还定义了两个类,Student类继承Person类。每个类中都含有属性,方法,static块,非static块,构造方法。执行后,输出如下:

Person function()

Age = 1 Static Person

Student function()

Name = lisi Age = 1 Static Student

Age = 1 Non-Static Person

Age = 1 Construct Person

Name = lisi Age = 1 Non-static Student

Name = lisi Age = 1 Construct Student

从输出内容可以看出,在某一个类中类总是会先初始化属性和方法,接着是static块, 非static块,构造方法。构造方法是最后才执行的哟!如果该类继承父类,则会先初始化父类的属性和方法,再是static块,然后是自己的属性和方法和static块,然后是父类的非static块和构造方法,最后是自己的非static块和构造方法。这里的非static块可以看成是构造之前的初始化代码块。 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 初始化