构造器 Constructor 是否可被 override (重写)?

Constructor 不能被 override, 但是可以 overload (重载), 所以在一个类中可以有多个构造函数的情况.

Constructor 不能被继承, 所以不能被 override. 每一个类必须有自己的构造函数, 负责构造自己这部分的构造. 子类不会覆盖父类的构造函数, 相反必须负责在一开始调用父类的构造函数.


构造器是用来干什么的?

构造器是用来生成一个类的实例, 是用来初始化这个实例的.


构造器如何工作?

Java在构造实例时的顺序:

1.分配对象空间, 并将对象中成员初始化为零或者空, java不允许用户操纵一个不定值的对象.
2.执行属性值的显式初始化.
3.执行构造器.
4.将变量关联到堆中的对象上.

而执行构造器的步骤又可以分为以下五步:

1.分配参数给指定的构造函数.
2.如果这个指定的构造函数的第一个语句使用 this 指针显式的调用本类的其他构造函数, 则递归执行这5个步骤, 如果执行过程正常则跳到步骤5.
3.如果构造函数的第一个语句没有显式调用本类的其他构造函数, 并且本类不是 Object 类( Object 是所有类的父类, 而它自己没有父类), 则调用显式(用 super 指针)或隐式的指定的父类的构造函数, 递归执行这5个步骤, 如果执行过程正常则跳到步骤5.
4.按照变量在类内的定义顺序来初始化本类的变量, 如果执行过程正常则跳到步骤5,
5.执行这个构造函数中余下的语句, 如果执行过程正常则过程结束.


构造器为什么不能被 override?

构造函数不是方法, 那么用来修饰方法特性的所有修饰符都不能用来修饰构造函数(并不等于构造器不具备这些特性, 比如虽然不能用 static 修饰构造函数, 但它却有静态特性), 构造函数只能用 public, private, protected 这三个权限修饰符, 且不能有返回语句.

你可能感兴趣的:(构造器 Constructor 是否可被 override (重写)?)