多重继承或多个接口

时间:2015-10-25 01:33:20

标签: java inheritance interface

我是Java的新手,我想知道哪种解决方案更正确,为什么。

我有这两个接口:

interface Account
{
    public double getBalance();
}

interface Taxable
{
    public double calculateTaxes();
}

我需要一个实现这两个接口的类。

对我来说,这个解决方案更直观:

class TaxableAccount implements Account, Taxable
{
    @Override
    public double calculateTaxes()
    {
        return 10;  //just for example
    }

    @Override
    public double getBalance()
    {
        return 20;
    }

}

但我读了一本有这个解决方案的书:

interface TaxableAccount extends Account, Taxable
{
}

class AccountWithTaxes implements TaxableAccount
{
    @Override
    public double calculateTaxes()
    {
        return 10;
    }

    @Override
    public double getBalance()
    {
        return 20;
    }
}

感谢。

1 个答案:

答案 0 :(得分:3)

TaxableAccount接口将毫无意义,除非您打算向其添加内容 - 比如说至少有一个额外的方法。一个空的界面是一个代码气味'应该删除,留下你完美的第一个例子。

另一个线索是这是一种“气味”。是你在第二个例子中为这个班级提供一个好的,简单的名字时遇到了麻烦 - 大多数情况下,命名应该是明显的,不言自明的,就像在第一个例子中一样。