Java类应用重载机制允许存在多个构造方法,这些构造方法名称相同,但传入参数的数量或类型不同,下面简单介绍这几种构造方法
默认构造方法
当没有特别定义一个构造方法时,系统会自动提供一个无参数构造方法(子类除外,如果超类没有定义无参构造方法,子类又没显式的调用超类的其他构造方法,编译器会报错);如果哪怕定义了一个构造方法,系统也不会提供无参数构造方法。
无参数构造方法
当使用无参数构造方法进行实例化时,实例化对象的各个参数将会被自动初始化为默认值(0,false,null)。另外定义构造方法不允许有返回值,当给出返回值时,编译会报错。
含参数构造方法
可以定义带参数的构造方法,对于构造方法中没传入的参数,实例化对象时也会自动初始化为默认值(0,false,null)。
调用其他构造器
Java允许使用this关键字调用其他构造方法,具体使用方法请见代码。
public class Cat {
private String name;
private int age;
private String color;
//无参数构造方法
public Cat(){}
//含参数构造方法
public Cat(String name,int age){
this.name = name;
this.age = age;
}
//调用其他构造器
public Cat(String name,int age,String color){
this(name,age); //会自动调用定义了(String,int)类型参数的构造方法
this.color = color;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getColor() {
return color;
}
public static void main(String[] args){
Cat cat01 = new Cat();
Cat cat02 = new Cat("嘟嘟",3);
Cat cat03 = new Cat("朵朵",2,"白");
//对于构造方法中没传入的参数,实例化对象时将自动初始化为默认值(0,false,null)
System.out.println("cat01(name:"+cat01.name+" age:"+cat01.age+" color:"+cat01.color);
System.out.println("cat02(name:"+cat02.name+" age:"+cat02.age+" color:"+cat02.color);
System.out.println("cat03(name:"+cat03.name+" age:"+cat03.age+" color:"+cat03.color);
}
}
结果:
如有错误,敬请指正