尚硅谷JavaSE基础
6.2.2 构造器的特点
特点1:
构造器没有返回值, 也不可以声明void
特点2:
构造器名称必须和类名一致
特点3:
构造器不可以被final, static, abstract等修饰
特点4:
构造器不像普通方法可以随意调用, 只能在创建对象时调用一次
6.2.3 构造器调用
1.如何调用构造器
使用new关键字在创建对象时就会自动调用了构造器
public class TeacherTest { public static void main(String[] args) { Teacher t = new Teacher(); // 调用无参构造方法 System.out.println(t.say()); // 输出”姓名:张三,年龄:35,性别:男” } } |
6.2.4 构造器重载
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; } } |