定义:构造器也叫构造方法,用于对象的初始化构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造器的名称应与类名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一种特殊的方法。
构造器的作用:
(1)创建对象:通过new关键字来使用构造器,创建对象
换句话说:new 后面的就是构造器
(2)在创建对象的同时,可以给成员变量初始化。
如何声明构造器:
【修饰符】 class 类名{
//无参构造
【权限修饰符】 类名(){
}
//有参构造
【权限修饰符】 类名(形参列表){
}
}
构造器长得很像方法,所以很多人又把构造器称为构造方法。
构造器特点:
(1)构造器的名字必须和类名完全一致,包括大小写形式
(2)构造器没有返回值类型,也不写void,如果写了返回值类型就不是构造器了,就变成成员方法了。
(3)构造器的修饰符,只能是权限修饰符:public,protected,default,private
(4)如果一个类没有加/写任何构造器,那么编译器会自动添加一个无参构造,
并且这个默认无参构造的权限修饰符默认和类的权限修饰符一样。
(5)如果我们声明了/写了构造器,那么编译器就不会自动产生默认的无参构造了。
如果此时需要无参构造,就只能手动写了。
在继承时,构造器是不会被继承到子类的,但是子类一定会调用父类的构造器。
默认情况下,调用父类的无参构造,相当于子类构造器的首行有一句:super();
如果不想要调用父类的无参构造,想要调用父类的有参构造,或者父类只有有参构造,那么需要在子类的构造器首行写一句:super(实参列表);
问?为什么子类一定要调用父类的构造器呢?
这里调用父类的构造器不是为了创建父类的对象,而是为了给从父类继承的实例变量进行初始化。
因为子类会继承父类的成员变量,那么从父类继承的成员变量的初始化,需要通过父类的构造器进行。
public class SxtStu {
int id;
String sname;
int age;
SxtStu(){ //无参构造器,如果我们没有手动定义构造器,系统会自动添加
}
public class Student {
private String name;
public Student(){
System.out.println("无参构造");
}
public Student(String name){
this.name = name;
System.out.println("有参构造");
}
public String getInfo(){
return "姓名:" + name;
}
}
构造方法重载(创建不同用户对象)
public class User {
int id;
String name; //账户名
String pwd; //密码
public User(){
}
public User(int id,String name){
this.id =id;
this.name = name;
}
public User(int id,String name,String pwd){
this.id = id;
this.name = name;
this.pwd = pwd;
}
public static void main(String[] args) {
User u1 = new User();
User u2 = new User(101,"李龙");
User u3 = new User(100,"李龙","123456");
}
}
如果方法构造中形参名与属性名相同时,需要用this关键字区分属性与形参。
例如:this.id表示属性id;id表示形参id
快捷键:Alt + insert