从扩展swing组件的类中删除方法或字段

时间:2014-02-03 09:18:21

标签: java swing inheritance

出于好奇心......

假设我们有一个扩展Jpanel的类。而且我们不需要所有的Jpanel方法。例如,我们不会在新类上使用任何ToolTipText,因此我们不需要setToolTipText方法。 我的问题是:是否有可能从新类中删除我们不需要的方法?如果是,它对执行速度有什么影响(可能更快的构造)?

4 个答案:

答案 0 :(得分:2)

  

是否可以从新类中删除我们不需要的方法?

如果要隐藏部分用户的界面部分,则不应使用inheritance。请注意,inheritance用于is-a关系,如果子类A JPanel,那么它肯定用于ToolTip }。您应该使用的是Composition,它允许您屏蔽部分组合对象方法。

示例

public class A
{
    public void wantedMethod() {}

    public void unwantedMethod() {}
}

如果我想隐藏unwantedMethod来自我的子类,我可以这样做:

public class B
{
    private A a;

    public void wantedMethod() {
        a.wantedMethod();
    }
}

这不允许unwantedMethod转入interfaceB

答案 1 :(得分:2)

  

是否可以从新类中删除我们不需要的方法?

  • 是的,但是请注意,将任何Listener添加到普通JPanel(删除任何方法)和添加Listener之间存在差异移至JPanel的{​​{1}},修改后的通知

  • 无法找到真正的原因,可能会适得其反,但是如果你想修改内置的监听器,通知器,加速器,情况就会大不相同

  • API中实现的所有方法Listener都可以删除(对addXxxXxx有效,对所有化合物JPanel无效)

  

如果是,它对执行速度有什么影响(更快   建设也许)?

  • 我对此表示怀疑,一切都取决于从侦听器强制使用的方法(您的自定义,代码)

答案 2 :(得分:0)

如果从不调用该方法,则类的执行速度没有差别。删除方法会减少编译时间,但可以忽略不计。

答案 3 :(得分:0)

这是不可能的,并且方法的数量不会影响执行速度。理论上,加载一个用较少方法的类,不会花费那么长的时间,但它只是几个字节,因此只有几微秒,而且方法就在那里,无论如何。