1.什么是构造方法
构造方法,是一种特殊的方法,它是一个与类同名的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
2.构造方法的作用与定义
1.构造方法作用:
(1).构造出来一个类的实例
(2).对构造出来个一个类的实例(对象)初始化。
2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
4.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。
5.不能被static、final、synchronized、abstract和native修饰。
3.构造方法的重载
构造方法也是方法,是方法就可以重载。
重载示例如下:
public class Animal {
public String name;
public int age;
//不带参数的构造方法
public Animal(){
}
//带一个参数的构造方法(构造方法重载)
public Animal(String name){
this.name = name;
}
//带两个参数的构造方法(构造方法重载)
public Animal(String name,int age){
this.name = name;
this.age = 3;
}
}
当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。
为什么要重载?
重载可以在实例化对象的同时为对象的属性赋值。
顺带一提,重载构造方法最好是按照参数由少到多规范排列。
4.构造方法与this关键字
在当前类的构造方法中可以使用this()来调用本类中的其他构造方法也可以用this.方法()来调用本类中的普通方法,如下。
public class Animal {
public String name;
public int age;
//不带参数的构造方法
public Animal(){
}
//带一个参数的构造方法(构造方法重载)
public Animal(String name){
this();//this调用
this.name = name;
}
//带两个参数的构造方法(构造方法重载)
public Animal(String name,int age){
this(name);//this调用
this.age = 3;
}
}
为什么要使用this()来调用其他构造函数?
主要目的是提升构造方法中执行代码的可重用性。
注意:
1.在使用this()时一定要放在方法的首句。
2.本类中未规定一定要使用this()调用其他构造函数。
5.构造方法与super关键字
再看如下代码及输出结果:
public class Animal {
public Animal(){
System.out.println("我是动物!");
}
}
class Tiger extends Animal{
public Tiger(){
System.out.println("我是老虎!");
}
}
public class Test {
public static void main(String[] args) {
Tiger tiger = new Tiger();
}
}
输出结果如下:
如图所示调用子类的构造方法来实例化一个老虎,但是父类的构造方法也被调用了!
这说明什么?即子类对象实例化前一定会先实例化父类对象,实际上就相当于子类的构造方法中都隐藏着一句super(),当然它也一定要在方法中的第一句。