构造方法
格式:[修饰符] 类名(形参列表){}
- 构造方法也叫构造器,用于对象的初始化。
- 构造器的名称应与它所在的类的名称一致
- 构造方法的返回值跟普通方法有区别,普通方法的那种返回值,构造方法没有,也不能用void修饰符
- 构造方法通过new关键字调用!
- 构造方法的返回值类型是这个类本身。(很特殊)所以写构造方法的时候不需要写返回值。
- 如果我们没有定义任何构造方法,则编译器会自动定义一个无参的构造方法。如果已定义则编译器不会自动添加!
- 构造方法也是方法,只不过有特殊的作用而已。与普通方法一样,构造方法也可以重载。
public class Student {
String name ="丽丽";
String sex="男";
int age=18;
// 普通方法,这是一个没有返回值的普通方法
public void aa(){}
// 这是一个有返回值的普通方法
public int bb(){return 1;}
// 这是一个无参构造方法,1:方法名与类名一致。2:构造方法不能写返回值,也不能用void修饰符
public Student(){
System.out.println("我是无参构造"+age+"的"+name+"是"+sex+"生");
}
// 构造方法的重载(方法的重载讲解在04章节)也就是有参构造
public Student(String a,String b,int c){
name=a;
sex=b;
age=c;
System.out.println("我是有参构造"+c+"的"+a+"是"+b+"生");
}
}
没有参数构造方法是无参构造。
有参数的构造方法是有参构造。
构造方法的重载也是构造方法。
在测试类中进行测试
public class Text01 {
public static void main(String[] args) {
//创建对象的时候调用的是无参构造,上面学生类中有无参构造是为了能正常的new Student();
Student stu=new Student();
// 创建对象的同时调用了有参的构造,进行初始化赋值
Student stu1=new Student("花花","女",12);
}
}
运行结果:
我是无参构造18的丽丽是男生
我是有参构造12的花花是女生
- 构造函数的执行是否可以代表对象已经创建?不一定!
完整对象创建的四步,少一步都不行- 分配对象空间,并将对象成员变量初始化为0或空
- 执行属性值的显示初始化
- 执行构造方法
- 返回对象的地址给相关的变量