首页 > 解决方案 > Java:实现一个默认超类,它将为所有子类设置成员

问题描述

例子:

我想让大多数组件具有一定的背景颜色和一定的前景色,如果默认颜色似乎关闭,我想更改它。实现此目的的主要方法是 setBackgroundColor() 和 setForegroundColor()。

对我来说最合理的答案是:

public class DefaultComponent {
  private static final BACKGROUND_COLOR = Color.GRAY;
  private static final FOREGROUND_COLOR = Color.WHITE;
  public static void setComponent(Component comp) {
    comp.setBackground(backgroundColor);
    comp.setForeground(foregroundColor);
  }
}

这是正确的方法吗?这种构造还有一个特殊的名称,例如在工厂中?

标签: javaswingawt

解决方案


是的,您的设计表明您需要一个抽象。某些方法的共同行为可以封装在抽象类中,具体方法由具体类实现。

public abstract class GenericComponent {
  private static final BACKGROUND_COLOR = Color.GRAY;
  private static final FOREGROUND_COLOR = Color.WHITE;
  public static void setComponent(Component comp) {
    comp.setBackgroundColor(backgroundColor);
    comp.setForegroundColor(foregroundColor);
  }

  //here provide a list of abstract methods that each extension class will implement.
}

由于这是一个抽象类,它不能被实例化。您将需要至少有一个具体的扩展,并创建该扩展的实例。


推荐阅读