3

Java ではインターフェイスでインスタンス フィールドを使用できないことを知りましたが、この機能が本当に必要です。

私は最初のゲームを作成することを学んでいます。Hero私のゲームには、 (プレイヤーが制御する)Boss、、、などのさまざまな種類のアクターがありCanonます...

種類に関係なく、すべてのアクターがModelなどのサブクラスにいくつかのフィールドを与える基本クラスから継承し、 のすべてのサブクラスがMVC パターンのようにpositionおよびwidthに関連付けられるようにしたいと考えています。heightModelControllerRenderer

public class Model {
    //position
    public float x;
    public float y;

    public float width;
    public float height;
}

ちなみに、Heroandは死ぬことのできる実体だと思っていたので、例えばフィールドとして持つように強制されたBossインスタンスにしたいのですが、 a は不死の実体になるのでaではありません。したがって、私は試しました:Lifepublic float hitPoint;CannonLife

public interface Life {
    public float hitPoint;
}

のインスタンスが期待されます

public class Hero extends Model implements Life {...}

を本質的に持っていhitPointます。しかしその後、Interface のインスタンス フィールドは Java では許可されておらず、多重継承もサポートしていないことを知りました。

上記の設計を Java で実現することは可能ですか。

4

3 に答える 3

2

インターフェイスで宣言できるのは定数のみです。

インターフェイスで定義するものはpublic static finalすべて(もちろんメソッドを除いてpublic abstracthitpoints値が決して変わらない場合、この設計はあなたのために働きます。

より良い解決策はこれでしょう

public interface Life {
  //methods that implementation of this interface should implement
}

public abstract LifeForm extends Model implements Life {
  int hitPoints;
  //other LifeForm specific methods and instance variables
}

public Hero extends LifeForm {
  //Hero specific methods like save the damsel
}
于 2013-09-14T17:09:38.733 に答える