相关知识:
输出结果:
结论:通过构造器初始化对象时,会覆盖成员变量的初始化。
首先是关于默认构造器,我们知道当我们创建一个没有构造器的类时,系统会为我们创建一个默认构造器。这里有一点需要我们注意,当我们创建了构造器时,系统是不会再为我们创建默认构造器的。所以如果我们还需要使用默认构造器(无参构造器)时一定需要我们自己来创建。
相关题目:
有一个题是这样的:创建一个,它包含一个在定义时就被初始化的String域,以及另一个通过构造器初始化的域,这两种方式有何差异?
提示: 这道题的解其实重点是二者初始化的顺序问题,我们知道构造器初始化是在对象定义时进行的,所以其后初始化。
public class Constructe {
String s1 = new String("xiaotang");
Constructe() {
}
Constructe(int i){
this.s1 = new String("xiaodu");
}
public static void main(String[] args){
Constructe t1 = new Constructe();
System.out.println(t1.s1);
Constructe t2 = new Constructe(1);
System.out.println(t2.s1);
}
}
输出结果:
xiaotang
xiaodu
结论:通过构造器初始化对象时,会覆盖成员变量的初始化。