我在几分钟前刚刚了解到,我可以在包含类中嵌套一些静态类,这是我没有意识到的。在过去,我已经习惯了创建没有嵌套类的类。
我认为使用嵌套类将有助于代码的可读性,特别是当对象或类有子类或类型时,就像支付一样,你需要考虑支付条件。
我发现理解嵌套类并将其应用于我的编码与接口相结合是非常强大的。
所以我试着把它应用到我目前的项目中,我设计了Payment的类和方法。
public class Payment {
public static class terms{
public static class monthly implements Monthly{
@Override //error here
public static void setDownpayment(double aDownPayment) //and error here
{
}
}
public static class quarterly{
public static void setDownpayment(){
//do something
}
}
public static class semestral{
public static void setDownpayment(){
//do something
}
}
}
}
这是我创建的接口
public interface Monthly {
public void setDownpayment(double aDownPayment);
}
我试图使setDownpayment()
方法为static
,所以我可以这样引用它:
Payment.terms.monthly.setDownpayment(aDecimalValue);
但是它似乎不允许静态方法。因为我用"//error here
和//and error here
"注释的两行上有一个错误
我该如何修复它?
有其他可能的解决方案或替代方法或设计建议吗?
我很感激你的帮助。
谢谢。
在java中,你必须重写一个实现的接口的所有方法,并且由于静态方法是类而不是对象的一部分,它们是不可重写的,这就是为什么接口内部的静态方法是不允许的(在java8之前)
在Java8中,Interface中的静态方法是允许的,但是它们必须在接口中有主体,并且你不能在实现类中重写它们。