Java: 实现默认的超级 class 将为所有子class 设置成员

Java: Implementing a default super class that will set members for all subclasses

示例:

我想让大多数组件具有特定的背景颜色和特定的前景色,如果默认颜色似乎关闭,我想更改它。实现此目的的主要方法是 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);
  }
}

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

是的,您的设计表明您需要抽象。可以将某些方法的通用行为封装在抽象class中,具体的方法将由具体的classes.

实现
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.
}

由于这是一个抽象 class,因此无法实例化。您将需要至少有一个具体的扩展,并创建该扩展的实例。