インターフェイスのフィールドは定数値しか表現できないと読んだことがあります。私はこれに混乱しています。インターフェイス自体がこれらの値を設定することを意味しますか(定数インターフェイスのアンチパターン、これは悪いことです)、または実装クラスが定数に独自の値を設定できることを意味しますか。
後者は、たとえば、関連のないクラス (いくつかの共通インターフェイスによって統合されている) がたくさんあり、それらに関する情報を追加したい場合に役立ちます。例えば:
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();
}
}
またはそれは許可されていませんか?もちろん、代わりにゲッターを使用することもできますが、私が見た通常の方法は、定数に対して (暗黙的に静的で最終的な) ゲッター メソッドで public static final
はなくフィールドを使用することです。public