java中构造方法的执行过程_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java中构造方法的执行过程

java中构造方法的执行过程

 2013/10/21 4:10:55  houzx910  程序员俱乐部  我要评论(0)
  • 摘要:java中构造一个类实例,就要首先构造它的父类,因为子类是由父类派生而来,只有有了父类才可能有子类.而对于类本身的构造过程中,是要首先按顺序来对它的成员变量进行初始化,然后再调用其构造方法.所以java中构造一个类的整个过程可以理解为:如果有父类先1构造父类然后构造本类2本类成员变量初始化3调用本类构造方法实际上在每个类(除Object外)的构造造方法中都要执行super()方法,默认的情况下系统会自动为构造方法最前面加上super()这条语句,我们可以显示的写出来,并且也可为其加上参数
  • 标签:方法 构造 Java 执行 过程
java中构造一个类实例,就要首先构造它的父类,因为子类是由父类派生而来,只有有了父类才可能有子类.而对于类本身的构造过程中,是要首先按顺序来对它的成员变量进行初始化,然后再调用其构造方法.
    所以 java中构造一个类的整个过程可以理解为:如果有父类 先 1构造父类 然后构造本类 2本类成员变量初始化 3调用本类构造方法

    实际上在每个类(除Object外)的构造造方法中都要执行super()方法,默认的情况下系统会自动为构造方法最前面加上super()这条语句,我们可以显示的写出来,并且也可为其加上参数,前提是父类有相对应的构造方法.前面说的构造本类之前要构造父类就是这条语句的作用.
    成员变量的初始化过程是在super()语句后面其它方法体前面执行的
    如果某个类的父类有多个构造方法时 子类就可以用不同的参数调用父类中相对应的构造方法来构造父类
    如果加上自由块 和静态的自由块 执行的顺序为:
        父类的静态自由块,父类的静态成员变量被初始化
        子类的静态自由块,子类的静态成员变量被初始化
        父类的自由块,父类的成员变量被初始化
        父类的构造方法
        子类的自由块,子类的成员变量被初始化
        子类的构造方法
    自由块和成员变量是等同的优先级被初始化的
例:
public class E {
public static void main(String[] args) {
  new B();
}
}
class A {
{
  System.out.println("父类A的自由块");
}
A() {
  System.out.println("父类A的构造方法\n");
}
D d = new D("父类A的成员变量被初始化\n");
static {
  System.out.println("父类A的静态自由块");
}
static D dd = new D("父类A的静态成员变量被初始化\n");
}
class B extends A {
static D ddd = new D("子类B的静态成员变量被初始化");
static {
  System.out.println("子类B的静态自由块\n");
}
D dddd = new D("子类B的成员变量被初始化");
B() {
  super();
  System.out.println("子类B的构造方法");
}
{
  System.out.println("子类B的自由块\n");
}
}
class D {
D(String str) {
  System.out.println(str);
}
}

转至:http://blog.sina.com.cn/s/blog_55d3e64f0100au1g.html
发表评论
用户名: 匿名