如何在实现接口

时间:2018-05-27 01:26:21

标签: java

我有Interface名为“减少”,其中包含以下内容:

public interface Reduction{
    double taxReduction();
}

现在我有3个名为UserTaxpayerCompany的不同类。 TaxpayerCompanyUser延伸,并在Interface,taxReduction中包含方法的正文。

我现在要做的是能够在我的主要部门初始化纳税人和公司。在开始时,当我定义方法taxReduction时,我收到一个错误,说纳税人不是抽象的,所以我把它添加到班级纳税人:

public abstract class Taxpayer implements Reduction{
   ...
}

在那之后,我试图在我的主要上初始化纳税人,并且我收到一个错误,说它无法初始化,因为纳税人是抽象的。由于我需要让我的应用注册用户,我有以下内容:

User u = new User();

然后我得到了用户的所有输入,我很简单:

u = (User) new Taxpayer(all the variables i got) // if it's a Taxpayer user.

在此我得到了我上面说的错误。正如您所看到的,我真的不需要在界面上使用该方法,只是为了能够创建新的Users。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您的界面减少不包含方法,您必须在方法名称之后放置():

public interface Reduction{
    double taxReduction();
}

实现接口的类必须为其所有方法提供实现,除非它是抽象类。所以,这个类需要实现接口简化的方法,否则它将是Abstract:

public abstract class Taxpayer implements Reduction{
   ...
}
or 
public class Taxpayer implements Reduction
{
double taxreduction()
{
.....
}
}

答案 1 :(得分:-2)

您无法初始化抽象类。

正确的界面应该是:

public interface Reduction{
    double taxReduction();
}

您的TaxPayer应为该方法提供正文:

public class Taxpayer implement Reduction {

      @Override
      double taxReduction() {
           // If sons > 4 then return 10% etc
      }
}

修改

致@EJP:以下是Java document的智慧之词:

  

抽象类无法实例化