java 核心技术-12版 卷Ⅰ- 4.3.7 隐式参数与显式参数
方法会操作对象并访问它们的实例字段。例如,以下方法
将调用这个方法的对象的salary 实例字段为一个新值。考虑下面这个调用:
其作用是将number007.salary字段的值增加 5%。具体地说,这个调用将执行以下指令
raiseSalary 方法有2个参数。第一个参数称为 隐式(implicit)参数,是出现在方法名前的Employee类型的对象。第二个参数是位于方法名后面括号中的数值,这是一个显式(explicit)参数。(有人把隐式参数称为方法调用的目标或接收者)
可以看出,显式参数显式地列在方法声明中,例如 double byPercent。 隐式参数则没有出现在方法声明中。
在每一个方法中,关键字 this 指向隐式参数。如果愿意,可以如下改写 raiseSalary 方法
有些程序员更偏爱这样的风格,因为这样可以将实例字段与局部变量明显地区分开来。
C++ 注释: 在C++ 程序中,通常在类的外面定义方法:
void Employee::raiseSalary(double byPercent) // C++, not java
{
...
}
如果在类的内部定义方法,那么这个方法将自动成为内联(inline)方法。
class Employee {
...
int getName() {
return name;
}
}
在Java中,所有的方法都必须在类的内部定义,但这并不表示它们是内联方法。是否将每个方法设置为内联方法是Java虚拟机的任务。即时编译器会关注那些简短、经常调用而且没有被覆盖的方法调用,并进行优化