构造函数

java构造函数,也叫构造方法,是java中一种特殊的函数

  • 构造函数没有返回类型
  • 函数名和类名保持一致
  • new对象产生后,就调用了对象的属性和方法

    作用

    一般用来初始化成员属性成员方法
    构造函数作用一般是给类中的属性初始化赋值的

    格式

    1、**修饰符 类名(参数列表){ }**
    2、**直接类名(参数列表) { }**

默认无参构造函数和有参数的构造函数

  1. public class Employee
  2. {
  3. public Employee() //默认无参构造函数
  4. {
  5. }
  6. }
  1. public class Employee
  2. {
  3. public Employee(String name,int age)//有参数的构造函数
  4. {
  5. }
  6. }

构造函数可以有return关键字

  1. public class Employee
  2. {
  3. public Employee(String name,int age)
  4. {
  5. return;
  6. }
  7. }

构造函数中可以由return关键字,但是不能有具体的返回值类型

  • 构造方法不是手动调用的,是对象被创建的时候jvm调用
  • 如果一个类没有定义构造方法,jvm在编译的时候会给这个类默认添加一个无参构造方法
  • 如果定义了构造方法,那么jvm不会再创建无参构造方法
  • 创建对象的时候,有几个参数,就要有相应的构造方法,也是对应的要有几个参数
  • 构造函数可以调用构造函数

构造函数的作用

构造函数的作用是给类中的属性赋值初始化

  1. public class Employee{
  2. String name;
  3. int age;
  4. public Employ() //构造函数的作用是给类中的属性赋值初始化
  5. {
  6. name="harmony";
  7. age=2;
  8. }
  9. }

构造函数和创建对象

创建对象会自动的隐式的调用类中提供的构造函数

  1. public class Student
  2. {
  3. String name;
  4. int age;
  5. public static void main(String[] args)
  6. {
  7. Student s = new Student(); //创建对象会自动的隐式的调用类中提供的构造函数
  8. }
  9. }

创建对象必须依赖类中现在提供的构造函数

  1. public class Student
  2. {
  3. String name;
  4. int age;
  5. public Student(String name,int age)
  6. {
  7. }
  8. public static void main(String[] args)
  9. {
  10. Student s = new Student(); //错误
  11. Student s1 = new Student("harmony",2); //正确,创建对象必须依赖类中现在提供的构造函数
  12. }
  13. }

匿名构造块

构造代码块的格式

**{ }**

代码块的作用

  • 对象统一初始化
  • 对象创建之前都会执行这个代码块

    匿名构造块执行

    创建对象,如果类中提供了匿名构造块,都会执行

    1. public class Dept
    2. {
    3. {
    4. System.out.println("这是匿名构造块");
    5. }
    6. public static void main(String[] args)
    7. {
    8. Dept dept = new Dept();//创建对象,如果类中提供了匿名构造块,都会执行
    9. }
    10. }

    创建对象之前都会执行匿名构造块,执行匿名构造块和构造函数的参数无关

    1. public class Dept
    2. {
    3. {
    4. System.out.println("这是匿名构造块");
    5. }
    6. public Dept(String name)
    7. {
    8. }
    9. public static void main(String[] args)
    10. {
    11. Dept dept = new Dept("质量部");//创建对象之前都会执行匿名构造块,执行匿名构造块和构造函数的参数无关
    12. }
    13. }