2016-08-18 9 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 
      } 
     } 
    } 
} 

と、ここで私は、私はこのようにそれを参照することができstaticするsetDownpayment()メソッドを作ってみました、私は

public interface Monthly { 
    public void setDownpayment(double aDownPayment); 
} 

を作成したインタフェースです:

Payment.terms.monthly.setDownpayment(aDecimalValue); 

しかし、それはdoesnの静的メソッドを許可するようです。 2行にエラーがあるので、「//error here//and error here

どうすれば修正できますか?

その他の解決策または代替方法または設計提案はありますか?

ご協力いただきありがとうございます。

ありがとうございました。 Javaで

+1

最初に飛び出すこと:静的メソッドをオーバーライドすることはできません。 – azurefrog

+0

あなたの質問から話題にはならないが、[通貨を表すためにDoubleやFloatを使用しないのはなぜですか?](http://stackoverflow.com/questions/3730019/why-not-use-double-または浮動小数点から浮動小数点へ) –

+0

どのJavaのバージョンを使用しますか? –

答えて

2

、あなたはオーバーライドに実装インタフェースのすべてのメソッドを持っている、と静的メソッドは、クラスではないオブジェクトの一部であり、彼らはインターフェース内部静的メソッドが許可されていない理由ですオーバーライドされていないとして、(java8以前)

Java8では、インターフェイス内の静的メソッドは使用できますが、インターフェイス内に本体があり、実装クラス内でオーバーライドすることはできません。

関連する問題