1、什么是构造器
构造器又称为构造方法,是因为形式上很像方法,但是和方法还是有所区别。
2、构造器的作用
new对象时,在new对象的时候为实例变量赋值。避免了new完对象时,所有成员变量都是默认值,如果我们需要赋别的值需要单独为他们赋值的现象。
3、构造器的语法格式
【修饰符】 class 类名{
【修饰符】 构造器名(){
// 实例初始化代码
}
【修饰符】 构造器名(参数列表){
// 实例初始化代码
}
}
注意事项:
-
构造器名必须与它所在的类名必须相同。
-
它没有返回值,所以不需要返回值类型,甚至不需要void
-
如果你不提供构造器,系统会给出无参数构造器,并且该构造器的修饰符默认与类的修饰符相同
-
如果你提供了构造器,系统将不再提供无参数构造器,除非你自己定义。
-
构造器是可以重载的,既可以定义参数,也可以不定义参数。
-
构造器的修饰符只能是权限修饰符,不能被其他任何修饰。
4、同一个类中的构造器互相调用
-
this():调用本类的无参构造
-
this(实参列表):调用本类的有参构造
-
this()和this(实参列表)只能出现在构造器首行
-
不能出现递归调用
public class Student {
private String name;
private int age;
// 无参构造
public Student() {
// this("",18);//调用本类有参构造
}
// 有参构造
public Student(String name,int age) {
this();//调用本类无参构造
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getInfo(){
return "姓名:" + name +",年龄:" + age;
}
5、继承时构造器如何处理
-
子类继承父类时,不会继承父类的构造器。只能通过super()或super(实参列表)的方式调用父类的构造器。
-
super();:子类构造器中一定会调用父类的构造器,默认调用父类的无参构造,super();可以省略。
-
super(实参列表);:如果父类没有无参构造或者有无参构造但是子类就是想要调用父类的有参构造,则必须使用super(实参列表);的语句。
-
super()和super(实参列表)都只能出现在子类构造器的首行