基本语法:
[修饰符] 方法名 (形参列表){
方法体
}
说明:
- 构造器的修饰符可以默认,也可以是public、protected、private
- 构造器没有返回值
- 方法名必须和类名字一样
- 参数列表 和成员方法一样的规则
- 构造器的调用系统完成。
基本介绍:构造方法又叫构造器,是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。
它有几个特点:
- 方法名和类名相同
- 没有返回值
- 在创建对象时,系统会自动地调用该类的构造器完成对象的初始化。
举例:
public class Construct01 {
public static void main(String[] args) {
//当我们new一个对象时,直接通过构造器指定名字和年龄
Person p1 = new Person("张飞",30);
System.out.println("p1的信息:" + p1.name + p1.age + "岁");
}
}
class Person{
String name;
int age;
//构造器 解读
//1.构造器没有返回值,也不能写void
//2.构造器的名称要与类名一致
//3.(String pName,int pAge)是构造器形参列表,规则与成员方法一样
public Person(String pName,int pAge) {
System.out.println("构造器被调用~~~完成对象的属性初始化");
name = pName;
age = pAge;
}
}
//运行结果
/*
构造器被调用~~~完成对象的属性初始化
p1的信息:张飞30岁
*/
分析:构造器被调用的时候对象已经存在了,构造器只是完成对象的属性初始化。
注意事项和使用细节:
- 一个类可以定义多个不同的构造器,即构造器重载(比如:我们可以再给Person类定义一个构造器,用来创建对象的时候,只指定人名不指定年龄)
- 构造器名称和类名要相同
- 构造器没有返回值
- 构造器是完成对象的初始化,并不是创建对象
- 在创建对象时,系统自动地调用该类的构造方法,不能主动地调用,不能通过.构造器名调用
- 如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器),比如Dog(){},使用javap指令反汇编看看
- 一旦定义了自己的构造器,默认的构造器就被覆盖了,就不能再使用默认的无参构造器,除非显示地定义一下,即Person(){}
public class ConstructDetail {
public static void main(String[] args) {
//当我们new一个对象时,直接通过构造器指定名字和年龄
Person p1 = new Person("张飞",30);
System.out.println("p1的信息:" + p1.name + "\t" + p1.age + "岁");
Person p2 = new Person("张飞");
System.out.println("p1的信息:" + p2.name + "\t" + p2.age + "岁");
Person p3 = new Person(30);
System.out.println("p1的信息:" + p3.name + "\t" + p3.age + "岁");
//Dog d1 = new Dog();
}
}
class Dog{
//如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)
/*
* 默认构造器
Dog(){
}
*/
//一旦定义了自己的构造器,默认的构造器就被覆盖了,就不能再使用默认的无参构造器,
//除非显示地定义一下 这点很重要
public Dog(String dName) {
//...
}
//显示地定义一下 无参构造器
Dog(){
}
}
class Person{
String name;
int age;
//无参构造器
public Person() {
}
//第一个构造器
public Person(String pName,int pAge) {
System.out.println("构造器1被调用");
name = pName;
age = pAge;
}
//第二个构造器,只指定名字不指定年龄
public Person(String pName) {
System.out.println("构造器2被调用");
name = pName;
}
//第三个构造器,只指定年龄不指定名字
public Person(int pAge) {
System.out.println("构造器3被调用");
age = pAge;
}
}