Java中的构造器

一、构造器简述

构造器也称为构造方法,是一种特殊方法。是创建对象时程序必须调用的一种方法,也就是其主要功能就是伴随关键字new一起创建对象。经常用于初始化对象的的属性(给成员员变量赋值)。

二、构造器的语法:

修饰符  类名  (参数列表...){
 //逻辑代码
}

1.1 无参构造:

  • 类中即便没定义任何构造器,Java程序也会默认创建一个无参构造器。
  • 自动无参构造示例:

    //Application.java
    package com.zctou.oop.demo01;
    
    public class Application {
        public static void main(String[] args) {
            Person person = new Person();
        }
    }
    
    //Person.java
    package com.zctou.oop.demo01;
    
    public class Person {
    }
    

    Java面向对象编程05 - 构造器详解

2.2 有参构造:

  • 当类中显式定义了构造器,不管有参没参,程序也不再默认提供无参构造器。
  • 有参构造示例:

    //Application.java
    package com.zctou.oop.demo01;
    
    public class Application {
        public static void main(String[] args) {
            Person person = new Person();
        }
    }
    
    //Person.java
    package com.zctou.oop.demo01;
    
    public class Person {
        String sex; //性别
        int age; //年龄
        public Person(String sex) { //只定义了有参构造,没定义无参构造
            this.sex = "male";
        }
    }
    
    //输出:
    java: 无法将类 com.zctou.oop.demo01.Person中的构造器 Person应用到给定类型;
      需要: java.lang.String
      找到: 没有参数
      原因: 实际参数列表和形式参数列表长度不同
    从上面示例可以看到,定义了有参构造而没不定义无参构造,系统报错找不到构造器,说明系统不再自动提供无参构造。

    Java面向对象编程05 - 构造器详解

三、构造器的注意点:

1.1 调用时间

Java中,构造器只有在创建对象时才会被调用,是一种特殊的方法。

1.2 功能与作用

构造器的主要功能就是创建对象,能在创建对象时初始化类中的成员变量。

1.3 定义构造

  • 修饰符:只能是访问类修饰符如:public, protected, private。构造器不能有非访问性质的修饰哪: abstract, final, native, static, 或者 synchronized。
  • 返回值类型:构造器不能有返回值,包括void关键字
  • 命名:构造器只必须与类的名字相同,是特殊的方法,Java中的其他方法则作用驼峰命名原则。

1.4 this的用法

  • 与其他方法不一样,构造器中的this指的是同一个类中其他的构造器,这些构造器的参数列表必须不一样(其实就是调用其他方法)。
  • this必须是在构造器内的第一行。
//Application.java
package com.zctou.oop.demo01;

public class Application {

    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.sex);
    }
}

//Person.java
package com.zctou.oop.demo01;

public class Person {
    String sex; //性别
    int age; //年龄
    public  Person(){
        this("female");
        //this("female",10); //如果连接两个this,会报错
    }
    public Person(String sex) {
        this.sex = sex;
    }
    public Person(String sex,int age) {
        this.sex = sex;
        this.age = age;
    }
}

//输出
female

Java面向对象编程05 - 构造器详解

文章目录