无法实例化类对象的类型(Java)

无法实例化类对象的类型(Java)

问题描述:

下面是我收到错误的代码(在“new”之后的第二个“Killer”中)。无法实例化类对象的类型(Java)

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); 

这已经给了我相当多的麻烦,因为我看不出为什么这个声明应该工作基于我的构造函数杀手。

而这里的杀手级:

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 

我知道这可能有一个简单的解决方案,但截至目前为止,我没有看到它。

+9

“杀手”类是抽象类。这是你无法实例化的原因。查看[this reference](http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html)以获取关于Java中抽象类的更多信息。 – Henrik 2013-03-01 12:12:01

+0

谢谢,你是对的。 – 2013-03-01 12:18:11

+3

更改为'新的杀手( “嗜血判官”, “摩根”, 杀敌, 4.0, “亚瑟·米切尔”, 3, 假){}',它会突然工作。 – 2013-03-01 12:18:20

我们不能实例化抽象类。它是抽象类的特征。这里是抽象的。以下

的几个要点有关抽象类

  1. 抽象类是声明为abstract类。
  2. 它可能包含也可能不包含抽象方法。
  3. 抽象类不能实例,但它们可以被继承
  4. 抽象类不包含任何构造
你的情况

有声明为公共抽象类杀手这样一个抽象类其声明将其定义为public,抽象类与命名为杀手如前所述,是Abs无法实例化短文类,因此您需要对其进行细分或删除抽象关键字以便进一步获取其实例read oracle docs abstract classes