注意事项和使用细节一:

  1. 一个类可以定义多个构造器,即构造器重载。

比如:我们可以再给Person类定义一个构造器,用来创建对象的时候,只指定人名,不需要指定年龄。

  1. 构造器名和类名要相同。
  2. 构造器没有返回值。
  3. 构造器是完成对象的初始化,并不是创建对象。
  4. 在创建对象时,系统自动调用该类的构造方法。

代码演示:

  1. public class Main {
  2. public static void main(String[] args) {
  3. Person p1 = new Person("WTY1",19);//第一个构造器
  4. System.out.println("p1的信息如下:");
  5. System.out.println("p1的姓名:" + p1.name + " p1的年龄:" + p1.age);
  6. Person p2 = new Person("WTY2");//第二个构造器
  7. System.out.println("p2的信息如下:");
  8. System.out.println("p2的姓名:" + p2.name + " p2的年龄:" + p2.age);
  9. }
  10. }
  11. class Person{
  12. String name;
  13. int age;
  14. //第一个构造器
  15. public Person(String name, int age) {
  16. this.name = name;
  17. this.age = age;
  18. }
  19. //第二个构造器,只指定人名,不指定年龄。
  20. public Person(String name) {
  21. this.name = name;
  22. }
  23. }

运行结果:
image.png

注意事项和使用细节二:

  1. 如果自己没有定义构造器,系统会自动给类生成一个默认的无参构造器(也叫默认构造器)比如:

    Person(){ }

  2. 一旦定义了自己的构造器,默认构造器就被覆盖了,就不能再使用默认的无参构造器了,除非自己写一个无参构造器,如:

    Person(){ }

代码演示:

  1. public class Main {
  2. public static void main(String[] args) {
  3. //Person p = new Person();//报错,默认构造器被覆盖。
  4. }
  5. }
  6. class Person{
  7. String name;
  8. int age;
  9. //如果自己没有定义构造器,系统会自动给类生成一个默认的无参构造器(也叫默认构造器)
  10. /*
  11. 默认构造器
  12. Person(){
  13. }
  14. */
  15. //一旦定义了自己的构造器,默认构造器就被覆盖了,就不能再使用默认的无参构造器了
  16. // 除非自己写一个无参构造器
  17. public Person(String name, int age) {
  18. this.name = name;
  19. this.age = age;
  20. }
  21. }