thinking in java的一些代码:
构造函数的作用是在创建对象的时候初始化对象
- 构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
- 每个类可以有一个以上的构造器
- 构造器可以有0个、1个或1个以上的参数
- 构造器没有返回值
- 构造器总是伴随着new操作一起调用
package init;/** * @author sawshaw *对象初始化 */public class ObjectInit { private int a,b; public ObjectInit(){ //不带参数的默认构造器 System.out.println("调用了无参构造函数"); } public ObjectInit(int i){ //带参数的初始化 System.out.println("调用了有参构造函数"); } //对象初始化对属性赋值 public ObjectInit(int a,int b){ this.a=a; this.b=b; } public static void main(String[] args) { ObjectInit o=new ObjectInit(); o.getValue(); ObjectInit o1=new ObjectInit(6); o1.getValue(); ObjectInit o2=new ObjectInit(6,7); System.out.println(o2.a+","+o2.b); } public void getValue(){ System.out.println("===="); } }
缺省构造器 如果已经定义了一个构造器无论是否有参还是无参,编译器不会自动为你再创建默认的无参构造器,所以如果
package init;/** * @author sawshaw *对象初始化 */public class ObjectInit { private int a,b; /*public ObjectInit(){ //不带参数的默认构造器 System.out.println("调用了无参构造函数"); }*/ public ObjectInit(int i){ //带参数的初始化 System.out.println("调用了有参构造函数"); } //对象初始化对属性赋值 public ObjectInit(int a,int b){ this.a=a; this.b=b; } public static void main(String[] args) { ObjectInit o=new ObjectInit(); o.getValue(); ObjectInit o1=new ObjectInit(6); o1.getValue(); ObjectInit o2=new ObjectInit(6,7); System.out.println(o2.a+","+o2.b); } public void getValue(){ System.out.println("===="); } }
注释默认的构造器,那么ObjectInit o=new ObjectInit();
是会报错的,因为没有默认的无参构造器