构造方法就是为了产生对象,给对象的属性做初始化操作,是在产生对象时由编译器自动调用,为对象初始化服务
1、构造方法名字和类名相同,无法自定义方法名称
2、构造方法没有返回值类型声明
3、构造方法在创建对象时,由编译器自动调用,且只在对象产生时调用一次
4、若在定义类时,没有定义构造方法,编译器会默认生成一个无参构造,若已经定义,则不会产生默认的无参构造方法
理解Dog dog=new Dog();
这一行代码背后JVM具体干的事情
1、先检测Dog
这个类是否被加载到JVM
中。
也就是Dog
是否被加载到内存中,如果没有则加载到JVM
中。
JVM
运行时会加载成千上万个类,也有很多类不是立即加载的,而是在使用时尽心加载。
2、执行关键字new
,看到new
就在堆上开辟空间。
为对象在堆上开辟空间,具体开辟的内存空间大小视类中成员属性的类型以及个数来定。
3、调用构造方法为每个成员属性赋初始值。
构造方法就是在产生对象时给属性进行赋值,类中的变量都有默认值,默认值就是其数据类型的默认值。
构造方法可以重载
- 重载只是参数个数不同,与类型无关
- 无参构造就是都是默认值,一个都不赋值
- 有参构造就根据参数的个数来决定赋值哪几个成员变量
何时进行成员变量的赋值操作?
- 成员变量的所有赋值操作都在构造方法中进行;
- 成员变量是和对象强绑定的,只有当产生对象时,成员变量才会开辟空间并赋值;
- 定义类时只有类型声明没有赋值
定义在类中的属性才有默认值,方法中的局部变量不存在默认值,必须赋值后使用。