2017-03-06 1 views
0

私はカスタムJDialogクラスを作成しています。誰かが変更したくないメソッドをすべて非表示にするにはどうすればいいですか?多くのメソッドを持つクラスを拡張し、それらのほとんどを隠す

「結果」として、私は、メソッドが本当に重要視されるようにしたい。

など。

public class TestDialog extends JDialog { 
    public void setProgress(int p) {} 
} 

と誰かがこのダイアログを使用したいとき、彼が見るすべては次のとおりです。

testDialog.setProgress // suggested from eclipse 

UPDATE:それはあなたができる

+1

他の方法を非公開にしたり保護したりすることを妨げるものはありますか? –

+0

いいえ、私はおそらくこれを行う簡単な方法があると思うほど多くあります。 – user489872

+0

あなたのメソッドが見えないようにし、それらを非公開から保護して、それらを非公開かつ最終的にしたくないならば。 –

答えて

4

明確ではなかった場合、私はJDialogのからのすべてのメソッドを非表示にしますJDialogを拡張するのではなく、1つを含む独自のクラスを作成します。

例:あなたが唯一のメソッドを実装する必要が

public class MyDialog{ 

    private JDialog dia = null; 

    public MyDialog() { 
     //init dialog 
    } 

    //your methods, ... 

    public void setXYZ(int a) { 
     dia.setXYZ(a); 
    } 

} 

このように、あなたが見えるようにしたいです。

EDIT

より良く理解するために(例:deligation patternadapter pattern)異なるデザインパターンを見て

2

あなたは、クラスをラップする代わりに、それを拡張して考えがありますか?これは一般に、特に既存のメソッドのほとんどを実際に保持したくない場合に優先されます。

たとえば、Avoid extending classes、またはDelegation patternを参照してください。

関連する問題