-1

クラス用のテキストベースのゲームを作成しようとしていますが、メイン クラスである GCPUAPP を Artifact クラスから読み取らせようとしています。

GCPUAPP クラスに入力したコードは次のとおりです。

Artifact artifact=new Artifact();
artifact.name="Harry Potter and the Deathly Hallows";
artifact.description="Harry and his friends save the qizarding world again";
r1.contents=artifact;
dialog();

「新しいアーティファクト」でエラーが発生します。アーティファクトにあるコードは次のとおりです。

public abstract class Artifact{ 

    String name, description;

    public String toString(){
        return name;
}

私はJavaが初めてなので、完全に立ち往生しています。

4

3 に答える 3

4

抽象クラスのインスタンスを作成することはできませんArtifact artifact=new Artifact();

それが抽象クラスのポイントです。オブジェクトとしてインスタンス化できるのは、抽象クラスを継承する非抽象クラスのみです。

abstractクラス定義から表記を削除するか、継承する別のクラスを作成Artifactして、コンストラクターを次のように呼び出します。Artifact artifact=new MyNewArtifact();

于 2011-02-22T01:44:14.143 に答える
0

私はこれをするだろう

class HarryPotterArtifact extends Artifact {

    // no need to declare name and desc, they're inherited by "extends Artifact"

    public HarrayPotterArtifact(String name, String desc) {
         this.name = name;
         this.desc = desc;
    }
}

次のように使用します。

//Artifact artifact=new Artifact();
//artifact.name="Harry Potter and the Deathly Hallows";
//artifact.description="Harry and his friends save the qizarding world again";

  String harryName = "Harry Potter and the Deathly Hallows";
  String harryDesc = "Harry and his friends save the qizarding world again";
  Artifact artifact = new HarryPotterArtifact(harryName,harryDesc);
于 2011-02-22T05:41:48.923 に答える