Java抽象クラスを実装および設計する方法

user2651804

Javaコードで設計上の問題が発生しました。私のアプリケーションはミサイルを使用しており、3つの固有の属性があることを除いて、すべて同じように機能するさまざまなタイプのミサイルがあります。ミサイルのコンストラクターはこれらの属性を知っている必要があります。ミサイルを抽象クラスにすることにしましたが、メソッド/コンストラクターの外部のサブクラスで保護された変数に値を割り当てることができません。また、最初にスーパーコンストラクターを呼び出さなければならないため、コンストラクターで変数を宣言することはできません。どうすればこの問題について賢くなりますか?

public abstract class Missile {

private int x, y;
private Image image;
boolean visible;

private final int BOARD_WIDTH = 390;

protected final int MISSILE_SPEED;
protected final int MISSILE_HEIGHT;
protected String file;

public Missile(int x, int y) {
    ImageIcon ii =
        new ImageIcon(this.getClass().getResource(file));
    image = ii.getImage();
    visible = true;
    this.x = x;
    this.y = y - Math.floor(MISSILE_HEIGHT/2);
}


public Image getImage() {
    return image;
}

public int getX() {
    return x;
}

public int getY() {
    return y;
}

public boolean isVisible() {
    return visible;
}

public void move() {
    x += MISSILE_SPEED;
    if (x > BOARD_WIDTH)
        visible = false;
}
}

そして、それが機能しないことを除いて、サブクラスの理想的な実装があります。(保護された変数を認識できません)。私は何をしますか?

public class Laser extends Missile {

    MISSILE_SPEED = 2;
    MISSILE_HEIGHT = 5;
    file = "laser.jpg";

public Laser(int x, int y) {
    super(x, y);
}

}

JBニゼット

基本クラスのフィールドとコンストラクターをに変更します

protected final int speed;
protected final int height;

public Missile(int x, int y, int speed, int height, String file) {
    ImageIcon ii =
        new ImageIcon(this.getClass().getResource(file));
    image = ii.getImage();
    visible = true;
    this.speed = speed;
    this.height = height;
    this.x = x;
    this.y = y - Math.floor(height/2);
}

そしてサブクラスは:

public class Laser extends Missile {
    public Laser(int x, int y) {
        super(x, y, 2, 5, "laser.jpg");
    }

    ...
}

属性はすでに基本クラスにあるため、サブクラスで再定義しないでください。すべて大文字の命名は、Javaの定数に予約されています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プログラムで曜日を実装するクラスDayを設計および実装する

分類Dev

プログラムで曜日を実装するクラスDayを設計および実装する

分類Dev

このクラスを設計およびテストする正しい方法

分類Dev

java.lang.IncompatibleClassChangeError:ScalaCheckおよびScalaTestでクラスを実装する

分類Dev

編集:Pythonで2つのキュー実装のベンチマーク比較を行うための実験を設計および実装する方法

分類Dev

抽象クラスを実装するC ++

分類Dev

抽象クラスのメソッドを実装する方法は?(Java)

分類Dev

Javaの実装クラスの抽象クラス内に抽象クラスを実装するにはどうすればよいですか?

分類Dev

テレビ用のAndroidアプリを実装および設計する

分類Dev

国家および行動の形式。異なるクラス間で+、-、=演算子を実装する方法

分類Dev

Goで抽象クラスを実装する方法は?

分類Dev

抽象クラスに依存性注入を実装する方法

分類Dev

laravel5.3で抽象クラスを実装する方法

分類Dev

抽象クラスを実装するエレガントな方法

分類Dev

抽象基本クラスにoperator+を実装する方法

分類Dev

Javaで抽象メソッド/クラスを実装する

分類Dev

Node / Express-DELETEおよびPUTリクエストを実装する方法

分類Dev

クラス全体で値を実装および維持するための最良の方法

分類Dev

S3クラスの抽出および割り当て演算子を実装するための最良の方法

分類Dev

抽象クラスでこれらを設計する方法

分類Dev

同じクラスで拡張および実装する

分類Dev

ドメイン駆動設計の ID およびアクセス境界コンテキスト内に複数のユーザーを実装する

分類Dev

Springで抽象ファクトリの実装クラスを設定する

分類Dev

インターフェース、抽象クラス、および実装

分類Dev

クラスデコレータ、クラスが他のクラスを拡張および実装していることを確認する方法

分類Dev

xmlからxsdおよびjavaクラスを作成する方法

分類Dev

さびで抽象ファクトリを実装する方法は?

分類Dev

オブジェクト指向プログラミング:オブジェクトの相互作用を伴うメソッドを適切に設計、実装、および命名する方法は?

分類Dev

クラスのプロパティ/メソッドを使用してデータを保存および取得できるクラスを設計する方法

Related 関連記事

  1. 1

    プログラムで曜日を実装するクラスDayを設計および実装する

  2. 2

    プログラムで曜日を実装するクラスDayを設計および実装する

  3. 3

    このクラスを設計およびテストする正しい方法

  4. 4

    java.lang.IncompatibleClassChangeError:ScalaCheckおよびScalaTestでクラスを実装する

  5. 5

    編集:Pythonで2つのキュー実装のベンチマーク比較を行うための実験を設計および実装する方法

  6. 6

    抽象クラスを実装するC ++

  7. 7

    抽象クラスのメソッドを実装する方法は?(Java)

  8. 8

    Javaの実装クラスの抽象クラス内に抽象クラスを実装するにはどうすればよいですか?

  9. 9

    テレビ用のAndroidアプリを実装および設計する

  10. 10

    国家および行動の形式。異なるクラス間で+、-、=演算子を実装する方法

  11. 11

    Goで抽象クラスを実装する方法は?

  12. 12

    抽象クラスに依存性注入を実装する方法

  13. 13

    laravel5.3で抽象クラスを実装する方法

  14. 14

    抽象クラスを実装するエレガントな方法

  15. 15

    抽象基本クラスにoperator+を実装する方法

  16. 16

    Javaで抽象メソッド/クラスを実装する

  17. 17

    Node / Express-DELETEおよびPUTリクエストを実装する方法

  18. 18

    クラス全体で値を実装および維持するための最良の方法

  19. 19

    S3クラスの抽出および割り当て演算子を実装するための最良の方法

  20. 20

    抽象クラスでこれらを設計する方法

  21. 21

    同じクラスで拡張および実装する

  22. 22

    ドメイン駆動設計の ID およびアクセス境界コンテキスト内に複数のユーザーを実装する

  23. 23

    Springで抽象ファクトリの実装クラスを設定する

  24. 24

    インターフェース、抽象クラス、および実装

  25. 25

    クラスデコレータ、クラスが他のクラスを拡張および実装していることを確認する方法

  26. 26

    xmlからxsdおよびjavaクラスを作成する方法

  27. 27

    さびで抽象ファクトリを実装する方法は?

  28. 28

    オブジェクト指向プログラミング:オブジェクトの相互作用を伴うメソッドを適切に設計、実装、および命名する方法は?

  29. 29

    クラスのプロパティ/メソッドを使用してデータを保存および取得できるクラスを設計する方法

ホットタグ

アーカイブ