刚学Java,定义有参构造方法和无参构造方法的有用是什么?一知半解,感觉在类中有属性的很多都定义,没有学明白
比如我需要构造一个对象(如:房子)
无参构造:什么材料都没有,我需要白手起家,**所有**参数自己声明。
public house(){
}
有参构造:**有加固材料**(有参),其他材料你自己准备。
public house(String cement){
}
有什么用?比如你将来要建立一个房屋材料管理系统;你需要为顾客准备一个装修材料单。可能存在的情况是:有些顾客什么都没有,你需要全套配置;而有些顾客已经买了某个品牌的水泥,你只需要根据这种水泥配相应的材料单就可以了。
构造方法
1构造方法:
作用:给对象的数据进行初始化
格式特点:
A:方法名和类名相同。
B:没有返回值类型。
C:没有返回值。
没有用return带明确的值回来。
return;
2构造方法注意事项
A:如果你不提供构造方法,系统会给出默认无参构造方法
B:如果你提供了构造方法,系统将不再提供默认无参构造方法
这个时候怎么办呢?
a:使用自己给的带参构造。
b:要么自己再提供一个无参构造
建议:永远自己给出无参构造方法。
c:构造方法也是可以重载的。
3给成员变量赋值:
A:首先new创建对象,例如Student s = new Student( );实质上是调用无参构造方法,在堆内存中开辟空间,
然后通过setXxx()方法进行赋值。
B:通过带参构造方法。例如Teacher t=new Teacher(参数列表);实质上是调用有参构造方法,在堆内存中开辟空间同时进行赋值初始化。
主要是用来实例化用的,创建实体类的时候会默认有一个无参的构造函数,这样你在别的地方new 一个对象的时候,可以直接使用,编译器不会报错。
但是,如果你写了一个带参的构造函数,默认的无参构造函数就没有了,你就必须要加一个无参构造函数,不然你在别的地方new Test();时就会报错。
eclipse可以用alt+shift+s快捷键去生成。
我也是新手,我简单的说下我的想发哈,让你更方便实例化一个对象
好比你去工厂提车,有参数好比是你向工厂已经定制了相应的样式。你开回家要是觉得不满意之需要小改
无参好比是大众款,你需要大改
Java程序设计有三个特点,封装,继承,多态。而构造函数主要涉及到封装和多态,你的问题正好涉及到多态。我们new一个对象的时候,首先帮我们调用的函数,就是该对象的构造函数。
在一个类中构造函数可以有多个,但是参数类型不能不能一样,当我们new一个对象传入的参数,后台会帮我们对应到相应的构造函数。
http://longying2008.iteye.com/blog/1535722
除此之外,继承间构造方法的关系:子类中所有的构造方法默认都会访问父类中空参数的构造方法(super()),因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。每个子类的构造方法的第一行,有一条默认的语句:super();注意:仅仅是完成数据的初始化。假如父类没有无参构造方法,该怎么办呢?调用父类的其他构造方法。带参构造。super(...)。
super(…)或者this(….)必须出现在第一条语句上。因为如果可以放后面的话,就会对父类的数据进程多次初始化。所以,只能放在第一条语句上。
建议:永远给出无参构造方法。
构造方法在 http://blog.csdn.net/qq_30718113/article/details/69258381
继承间的构造方法、多态构造方法、抽象类构造方法、在http://blog.csdn.net/qq_30718113/article/details/70038240
继承、多态、抽象类都有构造方法,但是接口没有,足见构造方法的重要性