组合:所谓组合就是将一个类的对象作为另一个类的属性来应用。
初始化块:是java类里面出现的第四种成员(前面依次有属性、方法、构造器)。它没有名字,没有标识。初始化只在创建java对象时隐式执行,而且在调用构造器之前执行。
初始化块用两个大括号括起来,它的修饰符只能是static,称为静态初始化块。初始化块总是在构造器之前执行。用static修饰的称为类初始化块,它总是在类初始化阶段就执行,比普通初始化块先执行。静态初始化块也称为类初始化块,它也属于类的静态成员,所以它也只能访问静态成员,不能访问非静态成员。
【修饰符】{
//初始化块内容
}
如下例子,虽然构造器是最先写的,但是却是在初始化块后面执行的。
public class Person {
public Person()
{
System.out.println("Person的无参构造器");
}
//初始化块1
{
int a = 6;
if(a > 4)
{
System.out.println("Person的初始化块1,a大于4");
}
System.out.println("Person的初始化块1");
}
//初始化块2
{
System.out.println("Person的初始化块2");
}
public static void main(String[] args)
{
Person p = new Person();
}
}
输出的内容如下:
Person的初始化块1,a大于4
Person的初始化块1
Person的初始化块2
Person的无参构造器
初始化块的作用:因为初始化块不能接收参数,因此若在多个构造器中,如果含有相同的不用参数的那些代码,可以把这些代码提取出来,放在初始化块中,这样可以减少代码的复用。