为什么不应该扩展JFrame和其他组件?

2022-09-01 15:43:54

我在这里出现过几次,但在我看到的帖子中,没有人解释它。为什么我不应该扩展JFrame(或任何组件)?是否存在我应该扩展组件的条件,或者这是一个您不扩展组件的严格规则?


答案 1

一般来说,扩展组件往往严格使用组件。这在设计方面以不必要的方式严重限制了您的选择,因此您的类无法扩展不同的类,您无法隐藏JFrame的方法,从而导致它在使用类时更难以维护并且更容易触发意外的错误。

通常,意图是严格使用类来绘制框架,并且组合优先于继承。

话虽如此,当您打算将特定于项目的功能(例如便利方法等)添加到Frame时,子类化应该没问题,其中子类将用于代替Frame本身,但通常用作框架,而不是用作应用程序中特定框架的视图。


答案 2

与继承相比,更喜欢组合。所有通常的原因。组合强制减少代码之间的依赖关系。

Swing和事件AWT的组件非常复杂。你不想陷入那种混乱。您可以轻松地意外重写方法。在确实需要重写方法的情况下,如果是在正常代码中,则很难看出在哪里完成的。


推荐