使用大量方法扩展类并隐藏其中的大多数

时间:2017-03-06 10:08:31

标签: java

我正在创建一个自定义的JDialog类,我想知道如何隐藏我不希望有人改变的所有方法?

作为一个'结果'我只是希望这些方法真的很重要。

E.g。

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

当有人想要使用此对话框时,他看到的只有:

testDialog.setProgress // suggested from eclipse

更新:如果不清楚,我想隐藏JDialog中的所有方法

2 个答案:

答案 0 :(得分:4)

您可以创建一个自己的类,它不是扩展JDialog,而是包含一个。

示例:

public class MyDialog{

    private JDialog dia = null;

    public MyDialog() {
        //init dialog
    }

    //your methods, ...

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

}

这样你只需要实现方法,你想要可见。

修改

为了更好地理解,请查看不同的设计模式(例如:deligation patternadapter pattern

答案 1 :(得分:2)

您是否考虑过包装课程而不是延长课程?这通常是首选,特别是如果您实际上不想保留大多数现有方法。

例如,请参阅:Avoid extending classes或维基百科上的Delegation pattern