package Extends;
import java.util.*;
import java.util.GregorianCalendar;
public class EmployeeTest {
public static void main(String[] args) {
// 构造一个Employee数组,并填入了三个雇佣对象
Employee[] staff = new Employee[3];
staff[0] = new Employee("DBY", 7500, 1817, 12, 15);
staff[1] = new Employee("saa", 7500, 1817, 12, 15);
staff[2] = new Employee("ddd", 7500, 1817, 12, 15);
for (Employee e : staff)
e.raiseSalary(5);
for (Employee e : staff)
System.out.println("name=" + e.getName() + ",salary="
+ e.getSalary() + ",hiraDay=" + e.getHireDay());
}
}
class Employee {
// 3个实例域用来存放将要操作的数据,
//关键字private确保只有Employee类自身的方法能够访问这些实例域
//两个实例域本身就是对象,name域是String对象,hireDay是Date对象
private String name;
private double salary;
private Date hireDay;
// 一个构造器
// 构造器与类同名,在构造Employee类的对象时,构造器会运行,以便将实例域初始化为所希望的状态
//与其他方法不同,构造器,总伴随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();
}
// 4个方法,关键字public意味着任何类的任何方法都可以调用这些方法
//方法用于操作对象以及存取它们的实例域
//这三个是典型的访问器方法
//由于它们值返回实例域值,因此又称为域访问器
public Date getHireDay() {
// TODO Auto-generated method stub
return hireDay;
}
public double getSalary() {
// TODO Auto-generated method stub
return salary;
}
public String getName() {
// TODO Auto-generated method stub
return name;
}
//将调用这个方法的对象的salary实例域设置为新值,新值为通过该方法得到的salary值
//raiseSalary方法中有两个参数
//第一个为隐式参数,是出现在方法名前的Employee类对象e.raiseSalary(5);
//第二个为显示参数,位于方法名后面括号中的数值double byPrecent,即后者出现在方法的声明中
public void raiseSalary(double byPrecent) {
// TODO Auto-generated method stub
// double raise = this.salary * byPrecent / 100;
// this.salary += raise; 关键字this表示隐式参数,this.salary也就是实例域
double raise = salary * byPrecent / 100;
salary += raise;
}
}