java - 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);
}
}
这是正确的方法吗?这种构造还有一个特殊的名称,例如在工厂中?
解决方案
是的,您的设计表明您需要一个抽象。某些方法的共同行为可以封装在抽象类中,具体方法由具体类实现。
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.
}
由于这是一个抽象类,它不能被实例化。您将需要至少有一个具体的扩展,并创建该扩展的实例。
推荐阅读
- c# - ASP.NET Razor 页面模型绑定不起作用
- android - 如何使用卡片创建水平滚动 RecyclerView
- javascript - 寻找解决方法 fullscreenElement iOS Safari (iPhone)
- python - 在没有管理员访问权限的情况下使用 Python 获取 CPU 和 GPU 温度 - Windows
- c# - 如何将用户信息添加到 nlog 错误日志中
- flask - 502 错误的网关烧瓶应用程序部署在 AWS EB 中
- python-3.x - 我可以在 python 中使用变量从 Postgresql 中提取数据吗?
- node.js - 使用 axios、Node.js 连接到 Azure Blob 存储 REST API
- python - 找不到满足要求的版本 github-repo==2019.2.23 (来自 -r /tmp/build_ae8c4ea0_/requirements.txt () (来自版本:无)
- c# - 控制台应用程序 c# 中的平面文件格式