packagetestbotoo;import java.util.*;public classEmployeeTest
{public static voidmain(String[] args)
{
Employee[] staff= new Employee[3];
staff[0] = new Employee("liming", 75000, 1987, 12, 15);
staff[1] = new Employee("xiaoming", 70000, 1999, 12, 12);
staff[2] = new Employee("xiaoli", 20000, 2001, 12, 23);for (Employee e :staff) //e---Element (在集合中使用,因为集合中存放的是元素),这里和python中的i一样,for i in list: i.raiseSalary(5)
e.raiseSalary(5);for(Employee e :staff)
System.out.println("name="+e.getName()+",salary="+e.getSalary()+",hireDay="+e.getHireDay());
}
}classEmployee{privateString name;private doublesalary;privateDate hireDay;public Employee(String n, double s, int year, int month, intday){
name=n;
salary=s;
GregorianCalendar calendar= new GregorianCalendar(year, month -1, day);
hireDay=calendar.getTime();
}publicString getName(){returnname;
}public doublegetSalary(){returnsalary;
}publicDate getHireDay(){returnhireDay;
}public void raiseSalary(doublebyPrecent){double raise = salary * byPrecent / 100;
salary+=raise;
}
}
Employee类包含一个构造器和4个方法:
public Employee(String n, double s, int year, int month, int day)
public String getName()
public double getSalary()
public Date getHireDay()
public void raiseSalary( double byPrecent)
这个类的所有方法都被标记为public, 关键字public意味着任何类的任何方法都可以调用这些个方法(共有四种访问级别)
实例域,强烈建议实例域标记为private:
private String name;
private double salary;
private Date hireDay;
构造器,构造器和类同名,在构造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();
}
构造器与类同名
每个类可以有一个以上的构造器
构造器可以有0个,1个或者多个参数
构造器没有返回值
构造器总是伴随着new操作一起调用
隐式参数与显示参数:
raiseSalary 方法有两个参数,第一个为隐式参数,出现在方法名前的Employee类对象。第二个参数位于方法名后面括号中的数值,这是一个显式参数
显示参数明显的列在方法声明中的,例如double byPrecent
在每一个方法中,关键字this表示隐式参数。如果需要,可以使用这样的方式编写:
public void raiseSalary(double byPrecent){
double raise = salary * byPrecent / 100;
salary += raise;
}
封装的优点:
getName(), getSalary(), getHireDay()
都是典型的访问器方法,由于只返回实例域值,因此又称域访问器。