构造方法是定义在java类中的一个用来初始化对象的函数,其方法名和类名相同,但是通常不显示地它,在创建类的一个实例时,构造方法就像一个方法一样被调用,因为从来不显示地调用它,所以无法访问其返回值,即构造函数不返回值。
构造方法的小例子:
Public class person{
Int id ;
Int age;
Person(int n, int i){
Id = n;
Age = I;
}
}
我们从上面的说明中,可以看出构造方法和方法是有区别的,主要表现在一下方面:
1、 修饰符:构造方法像普通方法一样,可以有任何的访问修饰符public、protected、private,但是不能有abstract、final、static等非访问修饰符;
2、 返回值:构造方法没有返回值,void也不行;
3、 命名:构造方法和类具有相同的名字,而类最好不要。
4、 编写:构造方法可以自己编写也可以系统默认,显然普通方法只能自己编写;
5、 调用:在创建对象或是调用静态成员变量时,首先会调用构造方法,是系统自动调用,而普通的方法只能实例化完对象,才能用对象调用。
上面只是简单的对比了一下构造方法和普通方法,下面我们在具体看一下。
(1) this用法:
对于方法引用this指向正在执行方法的类的实例;静态方法不能使用this关键字;构造方法指向这个对象的另一个构造方法,示例如下:
Public class Person{
String name;
int age;
String sex;
Person (string n, int g , string s){
name = n;
age = g;
sex = s;
}
Person ( string n ,I nt g){
This(n,g,”男”)
}
Public Static void main(String args[] ){
Person p1 = new Person(“hua”,20,”女”);
Person p2 =new Person(“yang”,20);
System.out.println(p1.name +”,” +p1.age +”,”+ p1.sex);
System.out.println(p2.name +”,” +p2.age +”,”+ p2.sex);
}
}
运行结果如下:
分析上面的代码得出,Person类中的第二个构造方法调用了第一个构造方法。
注意:在构造方法中只能调用一次其他的构造方法,并且并且调用构造方法的语句必须是第一条语句,否则编译错误。
(2) 继承中构造方法:
构造方法和普通方法,都用关键字super指向超类,但是使用方法不同。
1) 普通方法:执行被重载的超类中的方法,代码如下:
Class Person{
Public void eat(){
System.out.print(“想要吃好吃的”);
}
}
Class Woman{
Public void eat(){
super.eat();
System.out.print(“不行,还是减肥吧”);
}
}
2) 构造方法:调用超类中的构造方法,且必须放在第一行,否则出错,代码如下:
Class Person{
Person(){ }
}
Class Woman{
Woman(){
Super();
}
}
注意:如果子类构造方法中既没有显示调用积累构造方法,而基类中又没有午餐的构造方法,则编译后出错。
这里还有一点是需要大家注意的,在包含构造方法的初始化顺序如下:
1.主类的静态成员首先初始化;
2.主类的超类的构造方法按照从最高到最低的顺序被调用;
3.主类的非静态对象(变量)初始化;
4.调用主类的构造方法;
总之,构造方法并不难理解,但是在我们应用的过程中要细心,这样才不会出错。