什么是构造器
1. 什么是初始化
对象在刚创建时进行的工作就称为初始化, 初始化的主要工作是针对对象的属性的.
2.构造器概念
当对象创建时, 希望对象的属性值被正确赋值, 此时就需要用到了构造器, 构造器也称为构造方法, 本质上构造器就是一个方法, 是一个特殊的方法.
3. 如何定义构造器
构造器(构造方法)的定义
修饰符 类名(参数类型1 形参1, 参数类型2 形参2….) {
代码块;
}
public class Teacher { private String name; private int age = 30; private String gender = “女”; public Teacher() { // 无参构造器 name = “张三”; age = 35; gender = “男”; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public void setGender(String gender) { this.gender = gender; } public String getGender() { return gender; } public String say() { return “姓名:” + this.name + “,年龄:” + this.age + “,性别:” + this.gender; } } |
注意 : 类中如果没有提供任何的构造器, 编译器也会自动添加一个缺省的构造器
缺省的构造器就是 修饰符和类一致, 无参, 并且方法体中没有代码.
构造器的特点
特点1:
构造器没有返回值, 也不可以声明void
特点2:
构造器名称必须和类名一致
特点3:
构造器不可以被final, static, abstract等修饰
特点4:
构造器不像普通方法可以随意调用, 只能在创建对象时调用一次
构造器调用
1.如何调用构造器
使用new关键字在创建对象时就会自动调用了构造器
public class TeacherTest { public static void main(String[] args) { Teacher t = new Teacher(); // 调用无参构造方法 System.out.println(t.say()); // 输出”姓名:张三,年龄:35,性别:男” } } |
构造器重载
1.什么是构造器重载
当一个类中有多个构造器, 并且参数不同就形成构造器重载
构造器重载的目的是可以使用多种方式创建不同的对象
public class Teacher { private String name; private int age = 30; private String gender = “女”; public Teacher() { // 无参构造器 name = “佟刚”; age = 35; gender = “女”; } // 有参构造器 public Teacher(String n, int a) { name = n; age = a; gender = “女”; } // 有参构造器 public Teacher(String n, int a, String g) { name = n; age = a; gender = g; } public String say() { return “姓名:” + name + “,年龄:” + age + “,性别:” + gender; } } |
public class TeacherTest { public static void main(String[] args) { Teacher t1 = new Teacher(); // 调用无参构造方法 System.out.println(t1.say()); Teacher t2 = new Teacher(“李四”, 40); // 调用有参构造方法 System.out.println(t2.say()); Teacher t3 = new Teacher(“王五”, 50, “男”); // 调用有参构造方法 System.out.println(t3.say()); } } |
2. this()调用
在无参构造器中, 给对象的3个属性分别完成赋值, 而这个操作可以通过调用另外一个构造器来完成,调用的语法this(实参列表);
注意 :
this(…) 调用必须放在构造器的第一行!
this(…) 调用时,必须保证有一个构造器是没有this(…)的, 否则会形成构造器递归调用.
public class Teacher { private String name; private int age = 30; private String gender = “女”; public Teacher() { // 无参构造器 // 注释不算行 this(“张三”, 35, “男”); // 通过调用第3个构造器完成属性赋值 } // 有参构造器 public Teacher(String n, int a) { name = n; age = a; gender = “女”; } public Teacher(String n, int a, String g) { name = n; age = a; gender = g; } public String say() { return “姓名:” + name + “,年龄:” + age + “,性别:” + gender; } } |
想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训训课程视频供广大学员下载学习
上一篇: Java培训SE基础之封装
下一篇: Java培训SE基础之this关键字