java中的无参构造和有参构造
问题:
- 构造函数的作用?
- 什么是无参构造?
- 什么是有参构造?
- 无参构造和有参构造的区别
- 什么时候用无参构造函数,什么时候用有参的呢?
1.给对象的数据进行初始化
构造函数的作用:当new一个对象的时候,调用构造函数完成对象的初始化;
1) 创建对象。任何一个对象创建时,都需要初始化才能使用,所以任何类想要创建实例对象就必须具有构造函数。
2) 对象初始化。构造函数可以对对象进行初始化,并且是给与之格式(参数列表)相符合的对象初始化,是具有一定针对性的初始化函数。
在创建对象时,可以预先赋值。创造对象的时候,一定会调用,没有构造函数,创建不了对象!
我们new一个对象的时候,首先帮我们调用的函数,就是该对象的构造函数。
在一个类中构造函数可以有多个,但是参数类型不能不能一样,当我们new一个对象传入的参数,后台会帮我们对应到相应的构造函数。
如果在类中我们不声明构造函数,JVM会帮我们默认生成一个空参数的构造函数;如果在类中我们声明了带参数列表的构造函数,JVM就不会帮我们默认生成一个空参数的构造函数,我们想要使用空参数的构造函数就必须自己去显式的声明一个空参的构造函数。
有参数的构造函数,创建对象的时候,可以给属性赋值。
给成员变量赋值:
A:首先new创建对象,例如Student s = new Student( );实质上是调用无参构造方法,在堆内存中开辟空间,
然后通过setXxx()方法进行赋值。
B:通过带参构造方法。例如Teacher t=new Teacher(参数列表);实质上是调用有参构造方法,在堆内存中开辟空间同时进行赋值初始化。
有参的因为你必须以他的参数列表传值,所以你在实例化有参构造函数的时候必须就已经给他赋值,
Student s=new Student(“小明”,男",20);
而无参的就不需要就相当于有参的可以省略set那一步默认生成一个空参数的构造函数;
Student s=new Student();
s.setName(“小明”);
s.setSex(“男”);
s.setAge(20);
构造器其实就是构造对象实例的方法,无参数的构造方法是默认的,但是如果你创造了一个带有参数的构造方法,那么无参的构造方法必须显式的写出来,否则会编译失败。
5.什么时候用无参构造函数,什么时候用有参的呢?
当你定义构造函数时,想要初始化类的某个数据成员,就需要用到有参构造函数。如果不想初始化该数据成员,只是将其声明出来即可,等到普通函数去操作它时,在具体给它赋值。
https://www.cnblogs.com/huan-guo/p/8359801.html
https://blog.csdn.net/zdb292034/article/details/80642482
https://blog.csdn.net/vipmao/article/details/51530954