1.基本语法:
[修饰符]方法名(形参列表){
方法体;
}
2.说明:
构造器的修饰符可以默认
构造器没有返回值
方法名和类名字必须一样
参数列表和成员方法一样的规则
构造器的调用系统完成
3.构造器
是类的一种特殊方法,它的主要作用是完成对新对象的初始化
public static void main(String[] args) {
Person02 p1=new Person02("smith",80);
System.out.println("p1的信息如下");
System.out.println("p1的对象name="+p1.name);
System.out.println("p1的对象name="+p1.age);
}
}
//在创建人类对象时,就直接指定这个对象的年龄和姓名;
class Person02{
String name;
int age;
//1.构造器没有返回值,不能写void;
//2.构造器的方法名和Person02一样;
//3.(String pName,int pAge)是构造器的形参列表,规则和方法名一样;
public Person02(String pName,int pAge){
System.out.println("构造器被调用");
name=pName;
age=pAge;
}
构造器的使用细节
1.一个类可以定义多个不同的构造器,即构造器的重载;
比如:我们可以再给Person02类定义一个构造器,用来创建对象的时候,只指定人名,不需要指定年龄
2.构造器名和类名要相同
3.构造器没有返回值
4.构造器时完成对象的初始化,并不是创建对象
5.在创建对象时,系统自动调用该类的构造方法
//p1.Person02这个是错误的,构造器完成对象的初始化,不是创建对象
6.如果没有定义构造器,系统会自动生成一个默认无参构造器(也叫默认构造器)
比如Person02(){},使用Javap指令反编译看一下
7.一旦定义了构造器,默认构造器就被覆盖了,就不能再使用默认构造器了
除非再显示的定义
//此时默认构造器就已经被覆盖了,不能再用默认构造器了
//除非是显示定义一下
Person02(){
}
流程分析
1.加载Person类中信息(Person.class),只会加载一次
2.在堆中分配空间(地址)
3.完成对象初始化[3,1默认初始化 age=0 name=null 3.2显示初始化
age=90,name =null,3.3构造器的初始化 age=20,name=小倩
4.在对象在堆中的地址,返回给p(p是对象名,也可以理解成对象的引用)