关键字:构造函数、类、初始化、无参构造函数、有参构造函数、重载、子类、父类、对象存储空间、默认构造函数、构造方法、执行过程。
一、What 什么是构造函数?
构造函数是一种不带任何返回值且与类同名的函数,它是属于类的,在new类的实例对象时被调用。分无参和有参两种。可以自定义构造函数。若未自定义构造函数,则调用默认的无参构造函数;若自定义了构造函数,则根据参数类型及个数再决定调用哪个。
在new一个实例对象时,会先调用的是父类的构造函数,再调用子类的构造函数。即先创建出父类对象,然后才能创建子类对象,详见下图:
以下是对应的Java代码文本:
class Parent {
Parent() {
System.out.println("Parent constructor");
}
}
class Child extends Parent {
Child() {
System.out.println("Child constructor");
}
}
public class Test {
public static void main(String[] args) {
Child child = new Child();
}
}
这段代码定义了一个父类Parent
和一个继承自Parent
的子类Child
。在Parent
和Child
类中,都有一个构造函数,分别在创建对象时打印出构造函数的信息。在Test
类的main
方法中,创建了Child
的一个实例,将会调用Child
和Parent
的构造函数。
二、Why 为什么要有构造函数?
通过构造函数可以给类的对象初始化一些共用的基本属性信息或实现一些该类对象都需要实现的基本功能,提升代码的简洁性。试想一下,假如没有构造函数来替我们做这些事情,岂不是每创建一个对象后都需要编写一些重复的代码呢?
三、构造函数
1、构造函数是一种特殊的方法,具有以下特点
1).构造函数的方法名必须和类名相同
2).构造函数没有返回类型,可以有return但是不能有返回值,这这里只是标识结束,并不是返回的表示,一般也不使用return
3).构造函数的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
4).一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造方法,这个构造方法不执行任何代码。
5).构造方法可以重载,以参数的个数、类型、顺序。
2、构造函数的调用
子类必须先调用父类的构造函数。可以通过系统自动调用父类的默认构造函数,如果父类没有默认构造函数时,子类构造函数必须通过super调用父类的其他有参的构造函数。
3、构造函数的执行过程
1).初始化对象的存储空间为0或null值;
2).调用父类构造函数;
3).按照顺序分别调用类成员变量和实例成员变量的初始化表达式。
注意:除构造器之外,编译器禁止在其他任何方法中调用构造器。
四、总结
这篇文章是关于编程中构造函数的基础知识的详细解析。文章分为三个主要部分:
- 什么是构造函数?
- 构造函数是与类同名且不带返回值的特殊函数。
- 它在创建类的新实例时被调用。
- 可以是无参或有参的。
- 如果没有自定义构造函数,编译器会提供一个默认的无参构造函数。
- 为什么要有构造函数?
- 构造函数用于初始化对象的共用基本属性或功能。
- 它避免了创建每个对象时重复编写初始化代码。
- 构造函数的特点和执行过程:
- 特点:
- 方法名必须与类名相同。
- 没有返回类型。
- 用于对象初始化。
- 可以有多个构造方法(重载)。
- 如果没有定义构造方法,编译器会插入一个无操作的默认构造方法。
- 调用规则:
- 子类构造函数会首先调用父类的构造函数。
- 如果父类没有默认构造函数,子类需要通过
super
显式调用父类的构造函数。
- 执行过程:
- 初始化对象存储空间为0或null。
- 调用父类构造函数。
- 初始化类成员和实例成员变量。
- 特点:
- 构造函数不能在除自身之外的其他方法中被调用的规则。
五、汇总