出于好奇心......
假设我们有一个扩展Jpanel的类。而且我们不需要所有的Jpanel方法。例如,我们不会在新类上使用任何ToolTipText,因此我们不需要setToolTipText方法。 我的问题是:是否有可能从新类中删除我们不需要的方法?如果是,它对执行速度有什么影响(可能更快的构造)?
答案 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
转入interface
班B
。
答案 1 :(得分:2)
是否可以从新类中删除我们不需要的方法?
是的,但是请注意,将任何Listener
添加到普通JPanel
(删除任何方法)和添加Listener
之间存在差异移至JPanel
的{{1}},修改后的通知
无法找到真正的原因,可能会适得其反,但是如果你想修改内置的监听器,通知器,加速器,情况就会大不相同
API中实现的所有方法Listener
都可以删除(对addXxxXxx
有效,对所有化合物JPanel
无效)
如果是,它对执行速度有什么影响(更快 建设也许)?
答案 2 :(得分:0)
如果从不调用该方法,则类的执行速度没有差别。删除方法会减少编译时间,但可以忽略不计。
答案 3 :(得分:0)
这是不可能的,并且方法的数量不会影响执行速度。理论上,加载一个用较少方法的类,不会花费那么长的时间,但它只是几个字节,因此只有几微秒,而且方法就在那里,无论如何。