超类是Account,我有两个子类 - CurrentAccount和SavingsAccount.
超类将有一个方法applyInterest(),它将使用继承类指定的速率计算兴趣.我不知道如何强制一个类来定义它.
我能想到的唯一选择是强制子类实现applyInterest(),并在那里设置速率.
我不确定我是否理解你的问题,但我认为你可以使用关键字,abstract如果你不想介绍一个interface
public abstract class Account
{
public int applyInterest()
{
return 10 * getInterestRate();
}
abstract protected int getInterestRate();
}
Run Code Online (Sandbox Code Playgroud)
public class CurrentAccount extends Account
{
protected int getInterestRate() { return 2; }
}
Run Code Online (Sandbox Code Playgroud)
public class SavingsAccount extends Account
{
protected int getInterestRate() { return 3; }
}
Run Code Online (Sandbox Code Playgroud)
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class AccountTest
{
@Test
public void currentAccount()
{
Account ca = new CurrentAccount();
assertTrue(ca.applyInterest()==20);
}
@Test
public void savingsAccount()
{
Account sa = new SavingsAccount();
assertTrue(sa.applyInterest()==30);
}
}
Run Code Online (Sandbox Code Playgroud)