2016-08-18 164 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中,接口中的靜態方法是允許的,但它們必須在接口中具有主體,並且不能在實現類內覆蓋它們。