java 构造器初始化

thinking in java的一些代码:http://www.mindviewinc.com/Books/TIJ4/

构造函数的作用是在创建对象的时候初始化对象

  1. 构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
  2. 每个类可以有一个以上的构造器
  3. 构造器可以有0个、1个或1个以上的参数
  4. 构造器没有返回值
  5. 构造器总是伴随着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();是会报错的,因为没有默认的无参构造器

原文地址:https://www.cnblogs.com/JAYIT/p/6864472.html