摘自Java核心技术卷I 第10版 108页
方法用于操作对象以及存取它们的实例域。例如方法:
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
将调用这个方法的对象的 salary 实例域设置为新值。 看看下面这个调用:
number007.raiseSalary(5) ;
它的结果将 number007.salary 域的值增加 5%。具体地说,这个调用将执行下列指令:
double raise = nuaber007.salary * 5 / 100;
nuiber007.salary += raise;
raiseSalary方法有两个参数。
第一个参数称为隐式(implicit) 参数,是出现在方法名前的Employee类对象。
第二个参数位于方法名后面括号中的数值,这是一个显式(explicit) 参 数 (有些人把隐式参数称为方法调用的目标或接收者。)
可以看到,显式参数是明显地列在方法声明中的,例如 double byPercent, 隐式参数没有出现在方法声明中。
在每一个方法中,关键字 this表示隐式参数。如果需要的话,可以用下列方式编写 raiseSalary 方法:
public void raiseSalary(double byPercent) {
this.salary += raise;
}
有些程序员更偏爱这样的风格, 因为这样可以将实例域与局部变量明显地区分开来。
// 完整Employee类
public class Employee {
private String name;
private double salary;
private LocalDate hireDay;
public Employee(String n, double s, int year, int month, int day) {
name = n;
salary = s;
hireDay = LocalDate.of(year, month, day);
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public LocalDate getHireDay() {
return hireDay;
}
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
}