Java 构造器
构造器
构造器能在实例化对象的时候直接传入参数,使对象完成我们设定的初始化,构造器本质上就是一个成员方法,在实例化对象时,会运行构造器方法,但是它没有返回值,且由无需自己调用,JVM
会在实例化对象时调用构造器方法。
如果有python
基础可以将构造器认为是python
中的初始化方法__init__
构造器定义、使用
构造器的定义方法,在类中定义一个与类名同名的方法即可
语法访问修饰符 类名 (形参列表) {方法体}
class ... { public static void main (String[] args) { // 实例化对象,并传参 Constructor conObj = new Constructor(1, Test, 1.1); System.out.println(conObj.number + \n + conObj.str + \n + conObj.floatNum); } } class Constructor { int number; String str; double floatNum; // 构造器 public Constructor (int Num, String Str, double FloatNum) { number = Num; Str = Str; floatNum = FloatNum; } }
构造器细节
- 如果类中没有定义构造器,那么 Java 会自己生成一个无参构造器
类名 () {}
,如果定义了构造器那么默认的无参构造器将会被覆盖,也就是不能再使用无参方式实例化对象,除非利用重载重新定义一个无参构造器。 - 构造器支持重载,与方法的重载一样,一样是通过我们传入的实参匹配调用对应的构造器。
- 构造器的名字一定要与类名一致,严格区分大小写
- 构造器没有返回值,定义构造器时无需指定返回值类型
- 构造器方法会在实例化对象的时候自动调用。
- 构造器方法无法被手动调用。
对象创建流程
- 先在方法区中加载类信息(如果在此之前加载过不会再进行二次加载)
new
在堆中开辟对象空间- 初始化对象属性并设置对象属性默认值
- 如果在类中给类属性赋值了,会对类属性进行显式初始化
- 执行构造器方法
- 将对象空间的内存地址返回给引用对象的变量