我有Interface
名为“减少”,其中包含以下内容:
public interface Reduction{
double taxReduction();
}
现在我有3个名为User
,Taxpayer
和Company
的不同类。
Taxpayer
和Company
从User
延伸,并在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
。我该如何解决这个问题?
答案 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的智慧之词:
抽象类无法实例化