//构造函数:用于对象信息初始化。希望在对象创建时就需要做的事情,也可以放在构造函数中
/*
* 特点:
* 1、与类同名,如所建类的名字是A,构造函数的名字也必须A
* 2、无返回值 ,连void也没有
* 3、在new时自动调用
* 4、如果我们没有添加任何的构造函数,编译器会自动添加一个为空的构造函数。如果我们自定义了构造函数,那么编译器就不会再帮我们自动添加构造函数
*/
//如
public class A{
//构造函数
public A(){
}
}
关于构造函数的调用顺序
在创建一个类的对象时,首先会调用父类无参的构造函数,之后才会执行自己的构造函数,下面举一个例子
class A{
int i = 10;
A(){
print();
i= 20;
}
void print(){
System.out.println(i);
}
}
class B extends A{
int i = 30;
B(){
print();
i= 40;
}
void print(){
System.out.println(i);
}
}
public class Test1 {
public static void main(String[]args) {
System.out.println(new B().i);
}
}
//结果是 10 30 40
但是 如果类中存在static语句块时,static语句块会先执行,之后再执行构造函数,见下面的例子
public class Test1 {
public static void main(String[] args) {
new B();
}
}
class A{
A(){
System.out.print("5");
}
static{
System.out.print("6");
}
}
class B extends A{
B(){
System.out.print("2");
}
static{
System.out.print("3");
}
}
//输出结果是---->
//A的static语句块
//B的static语句块
//A的构造函数
//B的构造函数
//输出结果是---->
//A的static语句块
//B的static语句块
//A的构造函数
//B的构造函数