4:构建器
构建器是初始化类的一种方法,要求是与类名称一致。
eg:
1 class Example{ 2 Example(int i){ 3 System.out.println(i); 4 } 5 } 6 public class mail{ 7 public static void main(String[] strs){ 8 for(int i=0;i<5;i++){ 9 new Example(i); 10 } 11 } 12 }
如上,Example(int i)即为Example类的构建器。
ps:构建器中可以有return,但是不能返回值,仅能用于退出。
类过载:
在一个类中可以使用多个构建器,每个构建器必须拥有其独一无二的自变量类型表,每次仅能调用一个构建器来进行初始化。
eg:
1 class Example{ 2 Example(int i){ 3 System.out.println(i); 4 } 5 Example(String strs){ 6 System.out.println(strs); 7 } 8 } 9 public class mail{ 10 public static void main(String[] strs){ 11 int i=10; 12 new Example(i); 13 String j="abc"; 14 new Example(j); 15 } 16 }
如上,Example类中有两个构建器,而main中分别调用了它们。
ps:调用构建器时格式必须严格符合。
默认构建器:默认的构建器用代码表示即为形如Example(){}的构建器,它的作用仅仅是产生一个新的对象,如果我们也创建了任何构建器的话都会覆盖默认构建器,此时如果调用默认构建起的话便会显示编译失败。
初始化类的时候,其中任何位置(不包括另外的构造器)的对象均会初始化。
eg:
关键字:this
1 class Tag{ 2 Tag(int i){ 3 System.out.println(i); 4 } 5 } 6 public class mail{ 7 Tag T1=new Tag(1); 8 mail(String j){ //method 1 9 Tag T3=new Tag(4948); 10 System.out.println(j); 11 } 12 Tag T3=new Tag(3); 13 void print(){ 14 } 15 public static void main(String[] strs){ 16 new mail("abc"); 17 } 18 }
输出的结果为1 3 2 abc。可以得出在运行构建器中的代码之前初始化了类中的所有对象。
同时注意到T3倍初始化了两次,类中的初始化最后被构建器中的初始化覆写,不会被输出。
1 class mail{ 2 private int i=50; 3 mail a(){ 4 i++; 5 return this; 6 } 7 void print(){ 8 System.out.println(i); 9 } 10 public static void main(String[] strs){ 11 mail a=new mail(); 12 a.a().a().a().a().print(); 13 } 14 }
方法a()通过this返回当前对象的句柄,可以对同一个对象进行多次操作。
1 public class mail{ 2 private int i=50; 3 mail(String j){ //method 1 4 System.out.println(j); 5 } 6 mail(int i,String j){ //method 2 7 this(j); 8 System.out.println(this.i); 9 } 10 void print(){ 11 } 12 public static void main(String[] strs){ 13 new mail("abc"); 14 new mail(1,"xyz"); 15 } 16 }
这里面的this(j)为构建器中调用另一个构建器;this.i为调用类的成员对象,而非构建器中的成员对象。
浙公网安备 33010602011771号