尚硅谷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;

}

}