Java学习笔记 --- 构造器

一、构造器

构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。

Java学习笔记 --- 构造器_第1张图片 

案例演示:

public class Constructor01 {
	public static void main(String[] args) {
		//当我们new一个对象时,直接通过构造器指定名字和年龄
		Person p1 = new Person("jack", 20);
		System.out.println("p1对象的name=" + p1.name);
		System.out.println("p1对象的age=" + p1.age);
	}
}

class Person {
	String name;
	int age;
	/*构造器
	1.构造器没有返回值,也不能写void
	2.构造器的名称和类Person一样
	3.(String pNmae, int pAge)是构造器的形参列表,规则和成员方法一样
	*/
	public Person(String pNmae, int pAge) {
		System.out.println("构造器被调用,完成对象的属性初始化");
		name = pNmae;
		age = pAge;
	}
}

二、构造器注意事项和使用细节

1、一个类可以定义多个不同的构造器,即构造器重载


public class ConstructorDetail {
    public static void main(String[] args) {
        Person person1 = new Person("jack", 19);
        Person person2 = new Person("tom");
    }
}
class Person{
    String name;
    int age;
   //第一个构造器
    public Person(String pName, int pAge) {
        name = pName;
        age = pAge;
    }
    //第二个构造器,只指定人名,不需要指定年龄
    public Person(String pName) {
        name = pName;
    }
}

2、构造器名和类名要相同

3、构造器没有返回值

4、构造器是完成对象的初始化,并不是创建对象

5、在创建对象时,系统自动调用该类的构造方法。

6、当没有定义构造方法时,系统会自动给类生成一个默认无参构造方法又叫默认构造方法。

public class ConstructorDetail {
    public static void main(String[] args) {
        //当创建对象时就是调用默认的构造方法
        Person person = new Person();
    }
}
class Person{
    /*默认构造器
    Person() {

    }
    */
}

7、定义了自己的构造器,默认的构造器就覆盖了,不能再使用默认的无参构造器,要使用需要显式定义一下。

public class ConstructorDetail {
    public static void main(String[] args) {
        //当创建对象时就是调用默认的构造方法
        Person person = new Person();
}

class Person{
    String name;
    //需要显式定义
    public Person() {
    }

    public Person(String pName) {
        name = pName;
    }
}

三、入门练习

在前面定义的Person类中添加两个构造器:

第一个无参构造器:利用构造器设置所有人的age属性初始值都为18

第二个带pName和pAge两个参数的构造器:使得每次创建Person类对象的同时出生对象的age属性值和name属性值。分别使用不同的构造器,创建对象

public class ConstructorExercise {
	public static void main(String[] args) {
		Person p1 = new Person();
		System.out.println("p1的 name=" + p1.name + " age=" + p1.age);

		Person p2 = new Person("jack", 30);
		System.out.println("p2的 name=" + p2.name + " age=" + p2.age);
	}
}
class Person {
	String name;
	int age;

	public Person() {
		age = 18;
	}

	public Person(String pName, int pAge) {
		name = pName;
		age = pAge;
	}
}

四、对象创建流程详解

Java学习笔记 --- 构造器_第2张图片

内存图:

Java学习笔记 --- 构造器_第3张图片 

 

你可能感兴趣的:(java基础学习,学习,java)