嵌套类的接口静态方法

时间:2016-08-18 17:19:58

标签: java class interface

我刚刚在几分钟前就知道我可以在一个我不知道的包含类中嵌套一些静态类。我习惯于在过去创建没有嵌套类的类。

我认为使用嵌套类将有助于代码的可读性,特别是当对象或类具有子类或类型时,就像在需要考虑paymentterms的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);

但它似乎不允许使用静态方法。因为我在#34; //error here//and error here"

评论的2行中出现错误

我该如何解决?

任何其他可能的解决方案或替代方式或设计建议?

我很感激任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

在java中,您必须覆盖已实现的接口的所有方法,并且静态方法是类的一部分而不是对象,它们是是不可覆盖的原因 不允许在接口内部使用静态方法 (对于java8之前)。

在Java8中,允许接口中的静态方法,但它们必须在接口内部具有主体,并且您无法在实现类中覆盖它们