2017-12-18 8 views
0

は、私は下にネストクラスでderiveCalculatedDataの定義をオーバーライドする必要があります。
それは匿名クラスのオーバーライドを通してそれを達成することは可能ですか?
はどのようにして、その後、デフォルト以外のコンストラクタを呼び出すでしょうか?オーバーライド入れ子になったクラスのメンバー

Class A{ 


    static class B{ 

    B(String a,String b){ ... } 
    int deriveCalculatedData(){....} 
    } 

    main(){ 

     int i = new A.B(x,y).deriveCalculatedData();//Override,and create instance 
    } 
} 
+1

あなたがために、このメソッドをオーバーライドしたいと思うのはなぜ地球上で*テスト*の?確かにこれをブラックボックスとして扱いたいと思うでしょう。それは値を返すので、あなたが私たちに言っている以上のものがない限り、特定の値が与えられていることを期待することができます。 – Makoto

+0

はい、それは可能です –

答えて

0

はい、可能です。そのネストされた新しい実装または拡張を作成するだけでclassとなります。匿名クラスによって

次のいずれかの

// pass arguments to constructor like normal 
B b = new A.B(str1, str2){ 
    @Override 
    int deriveCalculatedData(){ 
     // your stuff 
     return -1; 
    } 
}; 

それとも全く新しいクラスファイルによって、あなたはそれを再利用することができます

public class C extends A.B { 

    public C(String str1, String str2){ 
     // pass arguments to super constructor 
     super(str1, str2); 
    } 

    @Override 
    int deriveCalculatedData(){ 
     // your stuff 
     return -1; 
    } 
} 

// call it from somewhere with arguments 
C c = new C(str1, str2); 
+0

なぜdownvote? – Lino

関連する問題