(1)raiseSalary方法有什么用?
public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}
raiseSalary方法用于增加员工的薪水。它接收一个参数byPercent,表示薪水增加的百分比。方法内部会计算出增加的薪水raise,并将其加到原有的薪水上。这样调用这个方法后,员工的薪水就会增加相应的百分比
(2)代码中3个Employee对象调用raiseSalary方法所执行的代码一样吗?返回结果一样吗?为什么?
for (Employee e : staff)
e.raiseSalary(5);
(1.)三个Employee对象调用raiseSalary方法所执行的代码是一样的,因为他们所调用的raiseSalary方法中的byPercent参数都一样。
(2.)返回结果不一样。三个Employee的初始薪水不一样,所以即使增加的百分比一样,但最终的薪水增加量会有所不同
(3)能不能将raiseSalary定义为static?结合该例子,你觉得一般来说什么样的方法应该声明为static?
(1.)可以将raiseSalary方法定义为static。
(2.)一般来说,应该将方法声明为静态方法,或者当方法不需要访问实例变量或调用实例方法时,可以将方法声明为static。例如raiseSalary方法中,由于raiseSalary方法不依赖于任何特定的对象状态,它只是根据输入的百分比增加员工的薪水,因此,将raiseSalary方法声明为静态方法可以更好地反映其独立于对象的特性。
(4)进阶要求:使用Java8中的日期类,替换掉Employee类中的hireDay。参考代码见Java8DateTimeTest.java。
class Employee
{
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
hireDay = LocalDateTime.of(year, month, day, 0, 0);
}
public LocalDateTime getHireDay()
{
return hireDay;
}
private String name;
private double salary;
private LocalDateTime hireDay;
}