构造方法是一种特殊的方法,它与类同名并且没有返回值,用来在对象实例化时初始化对象的成员变量。
构造方法的特点:
1、构造方法与类同名,不能有返回值(返回值也不能为void。
2、每个类可以有多个构造方法。我们可以根据自己的需求去定义构造方法以及其中的属性,其中常用的是空的构造方法和包含所有参数的构造方法。在我们没有去提供构造方法的时候,编译器在把源代码编译成字节码的过程中会提供一个默认的、没有参数的构造方法,这个构造方法不会执行任何代码。如果我们提供了构造方法,编译器就不会再创建默认的构造方法了。
3、构造方法最主要的作用是完成对象的初始化工作。
4、构造方法可以有0个,1个以及1个以上的参数。
5、构造方法不能被继承,所以不可以被重写,可以被重载,可以使用不同的参数个数或参数类型来定义多个构造方法。
6、构造方法是伴随着new操作一起调用的,不能由程序的编写人员直接调用,必须要由系统调用。构造方法在实例化对象的时候会自动调用,对于一个对象来说只会被调用一次。
7、子类可以通过super关键字来显示地调用父类的构造方法。当父类没用提供无参的构造方法时,子类的构造方法中必须显示地调用父类的构造方法,若是父类中提供了无参的构造方法,子类的构造方法就可以不显示地调用父类地构造方法,这种情况下,编译器会默认地调用父类无参数的构造方法。实例化对象时构造方法执行顺序:先父类,后子类。
8、当父类和子类都没有提供构造方法时,编译器会给父类生成一个默认的无参构造方法,给子类也生成一个默认的无参构造方法。默认构造方法的修饰符只根当前类的修饰符有关。
注意!普通方法也是可以和构造方法有相同的方法名的!
demo:
package com.demo002;
/**
* 构造方法案例
* @version 1.0
* @auther 暮玖琉年
* @date -16:46
*/
public class Demo01 {
//名称
private String name;
//年龄
private int age;
//性别
private String gender;
/**
* 无参的构造方法
*/
public Demo01(){
System.out.println("无参构造方法");
}
/**
* 带有参数的构造方法
* @param name 名称
* @param age 年龄
* @param gender 性别
*/
public Demo01(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
System.out.println("有参构造方法"+"姓名:"+name);
}
/**
* 普通方法
*/
public void Demo01(){
System.out.println("和构造方法同名的普通方法");
}
}