关于Java的构造器,有以下几点:
1 用构造器保证初始化:
初始化和清理是非常重要的问题,许多错误都是程序员忘记了初始化。因此,如果程序员不知道如何初始化和何时初始化或者每个人都有自己的初始化方法,则会带来很大的麻烦。
所以我们可以为编写的每个类都定义一个初始化方法Initialize(),该方法会在使用变量前提醒你要先初始化。但每个用户都必须记得自己去调用此方法。于是,Java提供构造器,保证用户在使用对象前会自动调用相应的构造器。
2 初始化与创建:
从概念上,初始化与创建是独立的概念。但在代码中,我们很少看到明确的初始化代码。在Java中,初始化是与创建捆绑在一起的。创建总是触发初始化行为。
3 构造器没有返回值:
构造器没有返回值,这与返回值为空不同。返回值为空的时候,尽管方法本身不会返回什么,但仍然可以选择让它返回别的东西。但构造器不会返回任何东西。虽然new表达式确实返回了对新建对象的引用,但构造器本身没有任何返回值。
4 默认构造器:
如果类中没有构造器,则编译器会自动帮你创建一个默认构造器,也称无参构造器。但如果你在类中定义了构造器,编译器不会再自动创建,
class Example {
public Example(int i){};
public Example(String s){};
public static void main(String args[]){
Example e1=new Example(10);//OK
Example e2=new Example("hello");//OK
Example e3=new Example();//error
}
}
5 在构造器中调用构造器:
有的时候可能需要在某个构造器中调用另一个构造器,可使用关键字this。
public class Test {
public Test(int i){
System.out.println(i);
}
public Test(int i,String s){
this(i);//必须在最起始处调用
System.out.println(s);
}
public void addInt(){
//this(i);//Error,构造器只能在构造器的起始处调用
System.out.println("add");
}
public static void main(String args[]){
Test t=new Test(10,"hello");
}
}
*/
Output:
10
hello
/*