构造函数与类名

a. 类中的构造方法可以省略不写的

b. 构造方法必须跟类名相同,普通的类方法能与类同名的,但是要返回一个值。

c. 构造方法都在new 对象的时候调用的

d. 一个类可以定义多个构造方法的

构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。

1,父类无任何构造,子类无构,有参,无参,有两参四种情况都会初始化时或调用子类构造时自动调用父类的默认无参。然后执行子类构造。

2,父类定义了无参构造,子类无构,有参,无参,有两参四种情况都会初始化时或调用子类构造时首先调用父类的无参。当然可以在子类中super()来显示调用。然后执行子类构造。

3,父类定义了有参和无参,那么子类必须显示调用有参初始化父类变量,否则执行2.

4,父类只定义了有参,这是不会有默认无参,也没有无参,则必须显示调用有参初始化父类变量,否则执行2,报错。

静态变量静态块惊天方法,牢记初始化顺序(完全是这个)=》只初始化一次

虚拟机在首次加载Java类时,会对静态成员变量、静态初始化块、静态方法进行一次初始化。只执行一次,不随创建再执行。我们不要去纠结这里的顺序,一般来说我们只需要知道,静态方法一般在最后。

父类静态变量>父类B静态代码块->子类静态变量-》子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数

静态初始化按声明顺序