2016-08-18 86 views
0

我刚刚在几分钟前才了解到,我可以在一个我不知道的包含类中嵌套多个静态类。我过去一直使用创建没有嵌套类的类。嵌套类的接口静态方法

我认为使用嵌套类将有助于代码的可读性,特别是当对象或类具有子类或类型时,就像付款,您需要考虑付款方式。

我发现理解嵌套类并将其应用于我的编码是非常强大的结合接口。

所以我试图将它应用到我设计支付类和方法的当前项目中。

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

我该如何解决?

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

我很感激任何帮助。

谢谢。

+1

跳出来的第一件事:你不能覆盖静态方法。 – azurefrog

+0

从你的问题中脱离题目,但你可能会考虑[为什么不使用Double或Float来表示货币?]的问题(http://stackoverflow.com/questions/3730019/why-not-use-double-或浮动到代表货币) –

+0

您使用哪个版本的Java? –

回答

2

在Java中,你必须覆盖所有的实施接口的方法,并作为静态方法是类的部分没有对象,他们不重写,这就是为什么内部接口的静态方法不允许(适用于java8之前)。

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