本人小白一枚,欢迎大家一起讨论学习,如有错误,还望大家指教。
构造函数
构造函数(构造器)是一种特殊的函数,它用来给对应的对象初始化。
构造函数的特点:
- 名称必须和类名相同。
- 每个类可以有一个以上的构造器(可以重载)。
- 没有返回值。
- 不允许用户显示调用,只能紧跟在new之后调用。
- 如果没有定义任何构造函数,将会为这个类缺省定义一个空参构造器。如果定义了构造函数,那么将不再提供缺省的构造器。
既然它是函数,它与普通的函数有什么区别呢?
- 格式不同:
构造函数不存在返回类型,函数名与所在类的类名一致。
普通函数有返回类型,函数名可以根据需求进行命名。 - 调用时期不同:
构造函数在类的对象创建时就运行。
普通函数在对象调用时才会执行。 - 执行次数不同:
一个对象创建后,其构造函数只执行一次,就是创建时执行。
一个对象创建后,其普通函数可以执行多次,取决于对象的调用次数。
构造函数私有化
既然构造函数是用来给对象进行初始化的,我们如果给构造函数私有化,有什么用处呢?
这样我们会涉及到一种设计模式—>单例设计模式,我们只希望new出一个对象,不希望别人去给我们new对象时,可以将构造函数私有化,我会在下面的学习中,会慢慢深入设计模式。
下面我们介绍一个在面试中可能会遇到的知识点:构造代码块
与构造函数不用的是:
构造函数写法为 修饰符 类名(参数) {方法体}
而构造代码块的写法只有 {方法体}
class Person {
private String name;
// 构造代码块
{
System.out.println("构造代码块");
}
// 构造函数
public Person(String name) {
this.name = name;
System.out.println("构造函数");
}
}
public class Demo {
public static void main(String[] aaa) {
System.out.println(new Person("hah"));
}
}
打印结果:
构造代码块的作用和与构造函数的区别:
构造代码块作用:给对象进行初始化,对象一建立就运行,而且优先于构造函数。
与构造函数的区别:构造代码块是给所有对象进行初始化,而构造函数是给对应的对象初始化。
所以我们得出:构造代码块定义的是不同对象共性的初始化内容。
简述this:
- this用于区分同名变量的情况。
- this语句用于构造函数之间进行互相调用。(注:this语句只能定义在构造函数的第一行,因为初始化要先执行。)