构造器(Constructor)
构造器又称为构造方法,那是因为它长的很像方法。但是和方法还有有所区别的。
构造器的作用
要创建一个类的实例对象,必须调用一个对象的构造器,来完成类的实例初始化过程。实例初始化过程就是为实例变量赋初始值的过程。
当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。
注意:无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法,一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。
构造方法的定义格式
【修饰符】 构造器名(){
// 实例初始化代码
}
【修饰符】 构造器名(参数列表){
// 实例初始化代码
}
示例代码如下:
public class Student {
private String name;
private int age;
// 无参构造
public Student() {}
// 有参构造
public Student(String n,int a) {
name = n;
age = a;
}
//此处其他代码省略
}
构造器的执行时机
在实例化对象时,调用(实例化一次调用一次)
注意事项
- 构造器名必须与它所在的类名必须相同。
- 它没有返回值,所以不需要返回值类型,甚至不需要void
- 如果你不提供构造器,系统会给出无参数构造器,并且该构造器的修饰符默认与类的修饰符相同
- 如果你提供了构造器,系统将不再提供无参数构造器,除非你自己定义。
- 构造器是可以重载的,既可以定义参数,也可以不定义参数。
- 构造器不能被static、final、synchronized、abstract、native修饰
示例
(1)声明一个员工类,
- 包含属性:编号、姓名、薪资、性别,要求属性私有化,提供get/set方法,
- 提供无参构造器和有参构造器
- 提供getInfo()
(2)在测试类的main中分别用无参构造和有参构造创建员工类对象,调用getInfo方法
class Test02_Constructor_Exer{
public static void main(String[] args){
//分别用无参构造和有参构造创建对象,调用getInfo
Employee e1 = new Employee();
System.out.println(e1.getInfo());
Employee e2 = new Employee("1001","张三",110000,'男');
System.out.println(e2.getInfo());
e2.setSalary(120000);
System.out.println(e2.getInfo());
System.out.println("e1薪资:" + e1.getSalary());
}
}
class Employee{
private String id;
private String name;
private double salary;
private char gender;
//提供无参构造器
Employee(){
}
//提供有参构造器
Employee(String i, String n){
id = i;
name = n;
}
Employee(String i, String n, double s, char g){
id = i;
name = n;
salary = s;
gender = g;
}
//提供get/set,
public void setId(String i){
id = i;
}
public String getId(){
return id;
}
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void setSalary(double s){
salary = s;
}
public double getSalary(){
return salary;
}
public void setGender(char g){
gender = g;
}
public char getGender(){
return gender;
}
//提供getInfo()
public String getInfo(){
return "编号:" + id + ",姓名:" + name + ",薪资:" + salary + ",性别:" +gender;
}
}