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;     } } 

构造器细节

  1. 如果类中没有定义构造器,那么 Java 会自己生成一个无参构造器 类名 () {},如果定义了构造器那么默认的无参构造器将会被覆盖,也就是不能再使用无参方式实例化对象,除非利用重载重新定义一个无参构造器。
  2. 构造器支持重载,与方法的重载一样,一样是通过我们传入的实参匹配调用对应的构造器。
  3. 构造器的名字一定要与类名一致,严格区分大小写
  4. 构造器没有返回值,定义构造器时无需指定返回值类型
  5. 构造器方法会在实例化对象的时候自动调用。
  6. 构造器方法无法被手动调用。

对象创建流程

  1. 先在方法区中加载类信息(如果在此之前加载过不会再进行二次加载)
  2. new 在堆中开辟对象空间
  3. 初始化对象属性并设置对象属性默认值
  4. 如果在类中给类属性赋值了,会对类属性进行显式初始化
  5. 执行构造器方法
  6. 将对象空间的内存地址返回给引用对象的变量