Java:实现一个默认的超类,为所有子类设置成员

Java:实现一个默认的超类,为所有子类设置成员,java,swing,awt,Java,Swing,Awt,例如: 我想让大多数组件都有特定的背景色和特定的前景色,如果默认颜色看起来是关闭的,我想改变它。实现这一点的主要方法是setBackgroundColor()和setForegroundColor() 对我来说,最合理的答案是: public class DefaultComponent { private static final BACKGROUND_COLOR = Color.GRAY; private static final FOREGROUND_COLOR = Color.W

例如:

我想让大多数组件都有特定的背景色和特定的前景色,如果默认颜色看起来是关闭的,我想改变它。实现这一点的主要方法是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);
  }
}

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

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

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

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

谢谢。在这种情况下使用静态函数是一种良好的编程实践吗?同样抽象的是单词,谢谢。这不是一个非常可扩展的模式。假设您希望能够设置多个属性。因为您使用的是类,所以只能以这种方式应用单个样式。您可以阻止任何其他扩展。如果不引用其中类的状态(没有使用
this
),则始终可以使用静态方法。所有这些方法都被视为实用方法。在这方面,您的方法是一个setter,但它并没有真正为对象设置一些内部属性。