0
我读过接口中的字段只能表示常量值。我很困惑。这是否意味着接口本身设置了这些值(常量接口反模式,这是不好的),或者实现类可以为常量设置自己的值。我可以在实现类可以设置的接口中有一个表示常量的字段吗?
如果我说有一堆无关的类(通过一些通用接口统一)并想添加一些关于它们的信息,后者会很有用。例如:
public interface Animal
{
public void walk()
}
public class Cat implements Animal
{
public void walk()
{
doCatWalk();
}
}
public class Dog implements Animal
{
public void walk()
{
doDogWalk();
}
}
现在假设我想写上的Animal
发出的噪音奏效的方法。为此,我需要知道噪音是什么 - 它是一个String
变量,并且对于特定的动物是恒定的。我可以改变界面
public interface Animal
{
public static final String NOISE;
public void walk();
}
,例如,实施Cat
为:
public class Cat implements Animal
{
public static final String NOISE = "Miaow!";
public void walk()
{
doCatWalk();
}
}
,或者是不允许的?当然,我可以使用getter来代替,但是我所看到的通常做法是使用public static final
而不是public
(隐含地为静态& final)常量的getter方法。
您是否尝试过它的参考访问? –
你怎么不能初始化一个'static final'变量? –