Constructor构造器,也译作构造函数,构造方法。概念上与 java的方法 无任何关系。
注意:构造器无返回值。支持重载,支持访问控制符。
?
1.如果一个类没有任何显示的构造方法定义,则在编译时java会自动添加一个无参数的默认构造方法。
说明:没有构造方法是不能被实例化的。没有意义的类。
?
2.除Object类其他任何类的构造方法都将执行其父类的构造构造方法。
说明:任何类的实例化都需要Object类。Object类功能特殊,它负责与底层方法打交道。Java 会顺着继承结构往上一直找到 Object,然后从 Object 开始往下依次执行构造方法。如果某个类的层次很深,那么它创建对象时就会要执行一大堆的构造函数。先执行父类的构造方法,那么子类的构造方法执行的时候就不需要担心父类的成员是否初始化好了。
?
类的初始化顺序
父类的字段初始化
父类的构造方法
本类的字段初始化
本类的构造方法
?
注意:如果类中有static块
static{ //static块 }
?那么static将在编译时就被执行。远远早于本类构造方法。
?
3.如果父类有多个构造方法,可以用super(匹配参数)来指定需要调用的父类构造方法。
?? 如果不指定父类构造器或父类没有显示的构造器,则java将在本类的构造方法中自动调用父类的默认构造方法。
?? 如果父类没有无参数构造方法,则子类必须用super(匹配参数)类调用父类的构造器。
?? 说明:编程时,为了防止以后出错,所以最好写一个空的无参构造器。这个构造器中可以没有任何实现。