我已经看过几次,但是在我看到的帖子中,没有人解释。为什么我不应该扩展JFrame(或任何组件)?是否存在我应该扩展组件的条件,或者这是您不应该采用的严格规则?
3 回答

宝慕林4294392
TA贡献2021条经验 获得超8个赞
一般而言,扩展组件倾向于严格使用该组件。这在设计方面以不必要的方式严重地限制了您的选项,以使您的类无法扩展不同的类,您无法隐藏JFrame的方法,从而导致在使用类时,JFrame的维护更加困难并且更容易触发意外的错误。
通常,其意图是严格使用该类来绘制框架,并且优先于继承而不是继承。
话虽这么说,当您打算让子类向Frame添加项目特定功能(例如便捷方法等)时,子类应该很好,在这种情况下,将使用子类代替Frame本身,但通常将其用作框架,而不是作为应用程序中特定框架的视图。

UYOU
TA贡献1878条经验 获得超4个赞
优先考虑组成而不是继承。所有通常的原因。组合强制减少代码之间的依赖性。
Swing和事件AWT的组件非常复杂。您不想陷入那种混乱。您可以轻松地意外覆盖方法。如果您确实需要重写方法,那么如果它属于普通代码,则很难看到它在哪里完成。

GCT1015
TA贡献1827条经验 获得超4个赞
如果您的应用程序确实只是一个JFrame,请继续进行扩展。但是,如果仅使用 JFrame ,则最好使用对象组合而不是继承。
例如,如果您的对象扩展了其他对象,那么您将别无选择。
添加回答
举报
0/150
提交
取消