![ed6f90bd66f8ad58d7c6c913f865e97d.png](https://i-blog.csdnimg.cn/blog_migrate/f606afe4fe82ad565d501512deec1383.jpeg)
一、构造器
概括:所谓构造器,就是用来创建一个类的实例,同时也可以对类中的属性进行初始化。
构造器有以下特点:
1.构造器的声明
//构造器的声明
2. 构造器(Constructor)与方法(Method)的区别:构造器:在每次创建对象的时候被调用一次,通俗的说就是,每当出现了new关键字构造器才被调用一次。
方法:只有当对象被创建之后才能调用方法(非静态),方法可以被无限次调用。
3.默认构造器:
开头已经说明,构造器是用来创建对象的一种特殊方法。这里有一种特殊情况,即:当在定义类的时候没有显式的声明构造器的话,那么编译器会自动创建一个无参且方法体也为空的构造器。
二、this关键字
this关键字有以下三个特点:
- this关键字可以调用本类中的「属性(Field)」
- this关键字可以调用本类中的「方法(Method)」
- this关键字可以调用本类中的其他「构造器(Constructor)」
三、super关键字
super关键字和this关键字很像,this关键字是用来调用当前类的某些结构,比如说调用当前类的属性 、方法、构造器。 而super关键字则是去调用当前类的父类的某些结构,比如我想调用父类的属性,就需要使用「super.父类属性名」来实现,方法也是一样的道理。 关于super最关键的一点就是其中super调用构造器的过程,如果当前类的构造器中没有「显式的调用」父类的构造器,那么就会默认调用父类中的那个无参构造器。
这里的设计逻辑是这样,因为子类和父类之间是一种继承关系,作为子类一定要有父类的某些特性,包括属性、方法、构造器,而当我们在使用子类创建对象的时候,是需要对父类的继承过来的各种结构进行初始化的,所以在子类的构造器的第一行会默认出现一个super(),用以调用父类的构造器。
子类对象实例化的过程如下:
![154790ec88443bfc493bab6f0c97fb5d.png](https://i-blog.csdnimg.cn/blog_migrate/a9cd361450dee578c88f480d5dbfec61.jpeg)
最后还需要考虑父类中构造器的类型:
![7438206303d37fcdd7f9dd231cd28440.png](https://i-blog.csdnimg.cn/blog_migrate/2f512dd5fd5fca48b57f0dae89b83878.jpeg)