强制继承类来定义方法

Mat*_*att 2 java

超类是Account,我有两个子类 - CurrentAccount和SavingsAccount.

超类将有一个方法applyInterest(),它将使用继承类指定的速率计算兴趣.我不知道如何强制一个类来定义它.

我能想到的唯一选择是强制子类实现applyInterest(),并在那里设置速率.

Man*_*zzi 5

我不确定我是否理解你的问题,但我认为你可以使用关键字,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)