2

エラーを受け取ったコードは次のとおりです(「new」の後の2番目の「Kill​​er」)。

String[] classes = new String[5];

kills[0] = "Brian Moser";
kills[1] = "James Doakes";
kills[2] = "Lila Tourney";
kills[3] = "Miguel Prado";

Killer morgan = new Killer("Dexter", 
                   "Morgan", 
                   kills,
                   4.0,
                   "Arthur Mitchell",
                   3,
                   false);

Killer のコンストラクターに基づいてこの宣言が機能する理由が見当たらないので、これは私にかなりの問題を引き起こしています。

そして、キラークラスは次のとおりです。

import java.util.*;

public abstract class Killer{

public String firstName; 
public String lastName;
private String[] killList;
private double score;
private String nemesis;
private int accidents;
public boolean caught;

public Killer(String firstName, 
            String lastName, 
            String[] killList, 
            double score,
            String nemesis, 
            int accidents, 
            boolean caught) 
{
                this.firstName = firstName;
                this.lastName = lastName;
                for(int i = 0; i < 5; i++)
                    this.killList[i] = killList[i];
                this.score = score;
                this.nemesis = nemesis;
                this.accidents = accidents;
                this.caught = caught;
} //end constructor

これにはおそらく簡単な解決策があることはわかっていますが、今のところ、私はそれを見ていません。

4

2 に答える 2

5

以下は、抽象クラスに関するいくつかの主要なポイントです

  1. 抽象クラスは、abstract と宣言されたクラスです。
  2. 抽象メソッドが含まれる場合と含まれない場合があります。
  3. 抽象クラスはインスタンス化できませんが、サブクラス化できます
  4. 抽象クラスにはコンストラクターが含まれていません

あなたの場合、public 抽象クラス Killerとして宣言された抽象クラスがあるため、その宣言はそれがpublicであり、抽象クラスがKillerとして名前が付けられていることを定義しているため、前述のように、抽象クラスはインスタンス化できないため、サブクラス化する必要があります。Oracleドキュメントの抽象クラスをさらに読むためにインスタンスを取得するために抽象キーワードを削除します

于 2015-01-06T05:01:27.343 に答える
2

抽象クラスをインスタンス化できません。抽象クラスの特徴です。ここは抽象的なので。

于 2013-03-01T12:13:43.937 に答える