我不知道如何描述我的问题,所以我会给你一个快速的解释。
我想制作一个程序,用户可以在其中选择一种语言,然后以该给定语言打印之后的文本。目前我在想这样的事情:
// Super | class Language;
// Sub | --- class German;
// Sub | --- class English;
if(UserChoseEnglish())
language = new English();
else
language = new German();
英语和德语具有相同的 public static final 字段,因此我可以使用用户选择的 language.anyMethod();
。 AFAIK 你不能覆盖字段,所以我正在考虑将所有字段包装在抽象方法(在父类(super class)中)中,只返回值并覆盖它们。
public abstract class Language
{
public abstract String thanks();
}
public class English extends Language
{
@Override
public String thanks()
{
return "Thanks!";
}
}
public class German extends Language
{
@Override
public String thanks()
{
return "Danke!";
}
}
这被认为是不好的做法吗?我应该只覆盖 getter 方法还是只是错过了一些我不知道的东西?如果您想帮忙,那就太好了。
(我目前只是在玩 Java,并且认为可以选择一种语言会很有趣。如果您有经验可以分享(库,属性,...?),请随时分享):)
最佳答案
如果问题确实是 I18N,您应该按照 @azurefrog 的建议查看 ResourceBundles。除此之外,这是一个合理的 OO 设计——基类定义了一个方法 (thanks()
),每个具体的子类都实现了它。
关于java - 使用抽象方法而不是字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25922205/