import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 
 * @author asus
 *
 */
public class EmployeeTest{
	public static void main(String[] args) 
	{
		Employee[] staff =new Employee[3];
		
		
		staff[0]=new Employee("mikes",1000,2017,9,1);
		staff[1]=new Employee("cindy",2000,2018,10,1);
		staff[2]=new Employee("paul",3000,2018,10,1);
	for(Employee e:staff) {
		e.raiseSalary(5);//将e的salary域值增加5%,即double raise=e.salary*5/100;e.salary+=raise;
	}
	for (Employee e:staff) {
		System.out.println("name="+e.getName()+"slary="+e.getSalary()+"hireday="+e.getHireDay());
	}
	
	}
}
	
	class Employee{
		public Employee(String n,double s,int year,int month,int day) 
		{   
			name =n;
			salary=s;
			GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
			hireDay=calendar.getTime();
		}
	public String getName() { 
		return name;
	}
	public double getSalary() { 
		return salary;
	}
	
	public Date getHireDay() { 
		return (Date)hireDay.clone();
	}
	/*方法用于操作对象以及存取它们的实例域。将调用这个方法的对象的salary实例域设置为新值。*/
	public void raiseSalary(double byPercent) { 
		  double raise=this.salary*byPercent/100;//this表示隐式参数  
		  this.salary+=raise;
	}
	
	private String name;
	private double salary;
	private Date hireDay;
	
	
	}	



1.与类同名 

2.每个类可以有一个以上的构造器 

3.构造器可以有0,1,1个以上的参数 

4.构造器没有返回值 

5.构造器总是伴随new操作符一起调用

public Employee(String n,double s,int year,int month,int day)//与类同名
{
 name=n;//构造器中不要命名与实例域同名的变量
salary=s;
GregorianCalendar calendar=new GregorianCalendar(year,month-1.day);
hireday=calendar.getTime();
}
private String name;
private double salary;
private Date hireDay;//实例域存放要操作的数据
new Employee("jack",10000,1997,3,2);//构造器总是伴随new操作符一起调用