扩展JFrame 的优缺点是什么,而不是创建新的JFrame ?
例如:
public class Test extends JFrame {
setVisible(true);
}
或
public class Test {
JFrame test = new JFrame():
test.setVisible(true);
}
答案 0 :(得分:9)
除非您想要实际扩展其功能,否则不应扩展类,在您显示的示例中,您应该使用选项2,因为选项1是滥用extend
功能。 / p>
换句话说 - 只要问题的答案是测试JFrame
?是否,它就不应该延伸JFrame
答案 1 :(得分:8)
不扩展JFrame(或任何Swing组件)的优点:
int getX()
和int getY()
方法。尝试一下,你会看到一些不那么有趣的异常行为。答案 2 :(得分:2)
如果扩展JFrame,我想修改/自定义我当前的Jframe类 所以子类可以使用这个自定义的实现。
如果在JFrame类中没有我想做的任何改变,只需使用 存在于您在代码中提供的第二个代码段中。通过使用,我的意思是 通过在JPanel和。中创建其他JComponent(示例的按钮/标签)等 创建一个对象测试并将JFrame contentPane设置为此对象。某物 像
public class Test extends JPanel {
public class() {
// add buttons/label here
}
...
private static void createAndShowGUI() {
JFrame frame = new JFrame();
Test object = new Test();
frame.setContentPane(object.setOpaque(true));
frame.setVisible(true);
}
...
}
答案 3 :(得分:0)
OOD的一个规则:如果你不能继承(扩展)你不继承它们的类。
继承会增加程序的复杂性和连通性,并可能导致新的错误。在你的情况下,没有任何理由扩展课程。
只有在需要访问受保护成员和/或获取多态行为(覆盖虚拟方法)时,才应扩展类。