隐式参数和显式参数

摘自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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值