Java:构造方法
为什么需要构造方法?
public class Teacher {
int age; // 年龄
String name; // 姓名
String position; // 职位
String education; // 学历
public String introduction() {
return "大家好!我是" + name + ",我今年" + age + "岁,学历" + education + ",目前职位是" + position;
}
}
编写一个测试类,实例化一个教师对象,并对其初始化,在控制台输出该教员的自我介绍
代码:
public class Test {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.name = "李雯";
teacher.age = 36;
teacher.education = "博士";
System.out.println(teacher.introduction());
}
}
Teacher类中有太多的属性,每次给属性赋值时非常麻烦:编码量大,无法重用给属性赋值的代码。
运行结果:
大家好!我是李雯,我今年36岁,学历博士,目前职位是null
什么是构造方法?
1.构造方法负责初始化类中的实例变量。(非“类变量”)
2.构造方法是一种特殊的方法,这种方法必须满足以下语法规则:构造方法必须与类名相同;不包含返回值类型描述部分。
3.构造方法不能有static和final关键字修饰。
如何使用构造方法?
使用new关键字调用构造方法,即构造方法(非“类变量”)在创建对象(也称对象实例化)时被调用。
代码:
public class TeacherTest {
public static void main(String[ ] args) {
Teacher teacher = new Teacher(); //创建Teacher对象
}
}
由于Teacher类没有显式构造方法,这时Teacher类就会有一个默认的无参构造方法。
显示构造方法
1.创建类时,如果没有显式定义构造方法,则该类会存在一个默认的无参构造方法;
2.可以在类中声明一个或多个有参构造方法,但每个构造方法在参数个数或参数数据类型上要有所差别:
3.如果类中存在显式构造方法,则默认的无参构造方法将不复存在,除非显式定义无参构造方法:
由于Student类中显式定义了构造方法,这时该类中默认无参构造方法就没有了,所以使用new Student()创建对象就会出错。
显式定义无参构造方法。
类中构造方法间的调用
1.类中可以有多个构造方法,构造方法之间可以通过this实现调用,但必须将调用构造函数代码写在有效代码的第一行:
由于没有将调用构造方法的代码放在有效代码的第一行,所以出错,正确代码如下图所示。
2.普通方法不能使用this调用类中构造方法,例如:
普通方法printInfo试图调用构造方法Student(String name),但由于构造方法不能在普通方法中调用,所以出错。