Java中构造器的细节,你懂几个?

构造器是Java基础中非常重要的知识点,我相信读者们只要认真的看完我这篇文章,绝对会对构造器的认识提升一个甚至好几个档次。

看一个需求:

首先我们看一个需求:前面我们在创建人类的对象的时候,我们是先把一个对象创建好,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类对象的时候,就直接指定这个对象的姓名和年龄,该怎么做?这个时候就可以使用构造器。

public class Constructor01 { 

	//编写一个main方法
	public static void main(String[] args) {
		//当我们new 一个对象时,直接通过构造器指定名字和年龄
		Person p1 = new Person("smith", 80);
		System.out.println("p1的信息如下");
		System.out.println("p1对象name=" + p1.name);//smith
		System.out.println("p1对象age=" + p1.age);//80
	}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
//
class Person {
	String name;
	int age;
	//构造器
	//作者解读
	//1. 构造器没有返回值, 也不能写void
	//2. 构造器的名称和类Person一样
	//3. (String pName, int pAge) 是构造器形参列表,规则和成员方法一样
	public  Person(String pName, int pAge) {
		System.out.println("构造器被调用~~ 完成对象的属性初始化");
		name = pName;
		age = pAge;
	}
}

关于构造器的一些细节:把下面的代码看懂就自然掌握了构造器的所有细节了

1.如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)

2.一旦定义了自己的构造器,那么系统默认的构造器就被覆盖了

3.一个类可以定义多个不同的构造器,就像Person类可以定义好几个构造器

4.构造器的名字要与类的名字一样

5.构造器是完成对象的初始化,而不是创建对象,创建对象这一步在new Person(“king”,“40”)这里已经完成

6.在创建对象的时候,系统就已经开始自动的调用构造器了

public class ConstructorDetail { 

	//编写一个main方法
	public static void main(String[] args) {
		Person p1 = new Person("king", 40);//第1个构造器
		Person p2 = new Person("tom");//第2个构造器

		Dog dog1 = new Dog();//使用的是默认的无参构造器

	}
}
class Dog {
	//如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)
	//使用javap指令 反编译看看
	/*
		默认构造器
		Dog() {
			
		}
	 */
	//一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,
	//除非显式的定义一下,即:  Dog(){}  写 (这点很重要)
	//
	public Dog(String dName) {
		//...
	}
	Dog() { //显式的定义一下 无参构造器 
	//其实你不定义也行,因为系统会有,我只是定义出来让你看看系统给你定义的无参构造器长啥样而已

	}
}

class Person {
	String name;
	int age;//默认0
	//第1个构造器
	public Person(String pName, int pAge) {
		name = pName;
		age = pAge;
	}
	//第2个构造器, 只指定人名,不需要指定年龄
	public Person(String pName) {
		name = pName;
	}
}

你可能感兴趣的:(Java,java,intellij-idea,开发语言,后端,面试)