6.阅读PPT“chap06类和方法进阶1”中的SavingsAccount类。 (a)为何将表示利率的字段“interestRate”设为static?为何将setInterestRate方法声明为static?请说明你的理由(没有理由不给分)。 (b)能否在实例方法addInterest里调用静态方法getInterestRate?请说明你的理由(没有理由不给分)。 (c)能否在静态方法showBalance里书写语句“System.out.print(balance);”?请说明你的理由(没有理由不给分)。 (d)能否在该类里编写如下重载方法addInterest和withdraw?请说明你的理由(没有理由不给分)。 --------程序清单------------------------------------------------------------------------------------------------------------ public double addInterest(double newInterestRate) { double interest = balance * newInterestRate; balance = balance + interest; return interest; } public void withdraw(double amount) { if (balance >= amount) balance = balance - amount; } --------------------------------------------------------------------------------------------------------------------------------- 答:
时间: 2023-08-15 19:11:59 浏览: 141
(a) 将表示利率的字段“interestRate”设为static是因为利率应该是所有SavingsAccount对象共享的,而不是每个对象独立拥有的。因此,将其设为static可以使其与类关联,而不是与对象关联。将setInterestRate方法声明为static是因为在该方法中修改利率时,需要确保所有SavingsAccount对象都受到影响,而不是只影响特定的对象。因此,setInterestRate方法应该是一个类方法,而不是实例方法。
(b) 可以在实例方法addInterest里调用静态方法getInterestRate。静态方法可以通过类名来调用,因此可以在实例方法中使用静态方法。
(c) 可以在静态方法showBalance里书写语句“System.out.print(balance);”。balance是一个实例变量,不能直接在静态方法中使用。但是,可以通过创建SavingsAccount对象来访问balance变量,如“new SavingsAccount().balance”。因此,在静态方法中可以使用这种方式来访问balance变量。
(d) 可以在该类里编写如下重载方法addInterest和withdraw。因为这两个方法的参数不同,因此不会与原来的方法产生冲突。重载方法可以提供更多的灵活性和适应性,从而增强程序的可扩展性。
```java
public double addInterest() {
double interest = balance * interestRate;
balance += interest;
return interest;
}
public void withdraw(int amount, int pin) {
if(pin != this.pin) {
System.out.println("Incorrect PIN!");
return;
}
if(balance >= amount)
balance -= amount;
}
```
阅读全文