普通格式:代码冗余
public class Stu {
private int age;
private String id;
private String name;
private String mobile;
public static void main(String[] args) {
Stu xiaoming=new Stu();
xiaoming.age =10;
xiaoming.id = "15462378";
xiaoming.name="xiaoming";
xiaoming.mobile="156237984";
Stu xiaoqing=new Stu();
xiaoqing.age =20;
xiaoqing.id = "55462378";
xiaoqing.name="xiaoqing";
xiaoqing.mobile="154235984";
}
}
为什么要构造方法?
Teacher类中有太多的属性,每次给属性赋值时非常麻烦:编码量大,无法重用给属性赋值的代码
构造方法
构造方法负责初始化类中的实例变量(非类变量)。构造方法是一种特殊的方法,这种方法必须满足以下语法规则:构造方法必须与类名相同;不包含返回值类型描述部分。构造方法不能有static和final关键字修饰。
public class Student {
private int age;
private String id;
private String name;
private String mobile;
//构造方法
/*快速创建构造函数 右键 source 选Generate Constructors using fields
* 可以创建 多个构造函数
* 构造函数之间的调用
*/
public Student(int age,String id,String name){
this.age=age;
this.id=id;
this.name=name;
}
public Student( String name, String mobile) {
super();
/*
*
*
*/
this.name = name;
this.mobile = mobile;
}
public Student(int age,String id,String name,String mobile){
this(age,id,name); //xuyao放在有效代码的第一行
this.mobile=mobile;
}//在普通方法中可以调用构造方法,但不能使用this 调用
/*
* 一个构造方法只能调用本类中一个其他构造方法
*/
public static void main(String[] args) {
Student xiaoming=new Student(30,"20152430123","xiaoming","13723719645");
Student xiaoqing=new Student(30,"20152430123","xiaoming","13723719645");
}
}
如何使用构造方法:
使用new关键字调用构造方法,即构造方法在创建对象(也称对象实例化)时被调用。
public class TeacherTest{
public static void main(String[] args){
Teacher teacher = new Teacher();
}
}
//创建Teacher对象 由于Teacher类没有显式构造方法,这时Teacher类就会有一个默认的无参构造方法。
显式构造方法:
创建类时,如果没有显式定义构造方法,则该类会存在一个默认的无参构造方法;可以在类中声明一个或多个有参构造方法,但每个构造方法在参数个数或参数数据类型上要有所差别:
如果类中存在显式构造方法,则默认的无参构造方法将不复存在,除非显式定义无参构造方法:
类中可以有多个构造方法,构造方法之间可以通过this实现调用,但必须将调用构造函数代码写在有效代码的第一行:普通方法不能使用this调用类中构造方法
关键字this:
this代表对当前对象的一个引用。
this关键字用于调用属性、方法及本类中构造方法。
this在实例方法中通常被省略,除非实例方法中包含与成员变量同名的局部变量时,访问成员变量需要使用this。
public class Student {
String name; //学生姓名
public void doHomework() {
System.out.println(this.name + “正在写作业……");
}
}
对象初始化过程
用new创建并初始化对象步骤:
给对象的实例变量(非“常量”)分配内存空间,默认初始化成员变量;
成员变量声明时的初始化;
初始化块初始化(又称为构造代码块或非静态代码块);
构造方法初始化
蓝框框起的代码运行后,对象初始化过程如下图示:
给对象的实例变量分配空间,默认初始化成员变量
成员变量声明时的初始化
初始化块初始化
参构造方法初始化