构造函数是java新建对象的一种手段

 

构造函数可以重载

如果一个类中有多个域,那么就可能需要多个构造函数。这时候,使用重载就可以了

 

 

构造函数中this和super的使用

this:(1)this用于本类的构造方法中,首先可以表示调用方法的对象.此时一般是为了去除歧义,也就是构造方法的参数和类中的域名字一致。这个时候就会采取就近原则

,因此。就必须使用this来显示的指定。

例如: class People{

  int age;

  String name;

  People(){};

  People(int age, String name){

    this.age = age;

    this.name = name

 

}

}

    (2)当一个类中有太多的构造方法时,为了复用代码,可以在一个构造方法中可以使用this()来表示调用该类的其他构造方法。

例如:

class People{
String name;
String address;
int age;

public People() {
}

People(String name){
this.name = name;
}
People(String name, String address){
this.name = name;
this.address = address;
}

People(String name, String address, int age){
this.name = name;
this.address = address;
this.age = age;
}

 

 

就可以改写成

class People{
String name;
String address;
int age;

public People() {
}

People(String name){
this(name , null, 0);
}
People(String name, String address){
this(name, address, 0);
}

People(String name, String address, int age){
this.name = name;
this.address = address;
this.age = age;
}

 

 

Super在构造方法的使用:子类在构建对象的时候,要先进行父类的创建。此时,如果父类有默认无参的构造方法,那么子类构造方法中可以不显示的调用super(),如果父类中没有默认无参的构造方法,那么子类的构造方法中就必须显示的调用父类的有参构造方法。而且必须放在子类构造方法的最前面

例如:class People{

  int age;

  People(int age){

    this.age = age;

  }

}

 

class Student extends People{

   Student(int age){

    super(age);

    this.age = age  

}

}

 

public class Test{

  public static void main(String a;rgs[]){

    Student s = new Student();

}

}