扩展 JFrame而不是创建新的 JFrame的优缺点是什么?
例如:
public class Test extends JFrame {
setVisible(true);
}
或者
public class Test {
JFrame test = new JFrame():
test.setVisible(true);
}
扩展 JFrame而不是创建新的 JFrame的优缺点是什么?
例如:
public class Test extends JFrame {
setVisible(true);
}
或者
public class Test {
JFrame test = new JFrame():
test.setVisible(true);
}
您不应该扩展一个类,除非您想实际扩展它的功能,在您展示的示例中,您应该使用选项 2,因为选项 1 是对extend
ing 功能的滥用。
换句话说-只要问题的答案是 Test a JFrame
? 是NO,它不应该延长JFrame
。
不扩展 JFrame(或任何 Swing 组件)的优点:
int getX()
和int getY()
方法时。试试看,你会看到一些不那么有趣的异常行为。如果扩展 JFrame,我想修改/自定义我当前的 Jframe 类,因此子类可以使用这个自定义实现。
如果我不想在 JFrame 类中做任何更改,只需使用您在代码中提供的第二个片段中现有的类似内容。通过使用,我的意思是在 JPanel 中创建其他 JComponent(例如按钮/标签)等,并创建一个对象 Test 并将 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);
}
...
}
OOD 的规则之一:如果你不能继承(扩展)你不继承它们的类。
继承增加了程序的复杂性和连通性,并可能导致新的错误。在您的情况下,没有任何理由扩展课程。
只有当您需要访问受保护的成员和/或获得多态行为(覆盖虚拟方法)时,您才应该扩展类。