当前位置: 首页 > 知识库问答 >
问题:

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

魏鸿禧
2023-03-14

下面是我收到错误的代码(在“new”之后的第二个“Killer”处)。

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

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

共有2个答案

谭思博
2023-03-14

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

冯宪
2023-03-14

下面是一些关于抽象类的要点

  1. 抽象类是声明为抽象的类
  2. 它可能包括也可能不包括抽象方法
  3. 抽象类不能被实例化,但它们可以被子类化
  4. 抽象类不包含任何构造函数

在您的例子中,有一个抽象类被声明为公共抽象类杀手,因此它的声明定义了它是公共的,名为Killer的抽象类,如前所述,抽象类无法实例化,因此需要将其子类化或删除abstract关键字,以获取其实例,以便进一步读取oracle文档抽象类

 类似资料:
  • 问题内容: 当我尝试运行此代码时: 我收到此错误: 我不明白为什么我无法实例化课程…在我看来似乎是对的… 问题答案: 是一个接口,因此您无法直接实例化它。您可以实例化一个具体的子类,例如:

  • 问题内容: 我试图创建一个字符串集,其中填充了哈希表中的键,以便for- each循环可以遍历该Set并将默认值放入哈希表中。我仍在学习Java,但是我尝试做的方式不是有效的语法。有人可以演示这样做的正确方法,并解释为什么我的方法行不通,而他们的方法行得通。 问题答案: 不是类,而是接口。 因此,基本上可以仅实例类实现(,或) 例如 :

  • 我试图将图像添加到数组中,但它给出了错误不能实例化类型Image j 原因会是什么?

  • 问题内容: 我有这堂课 我正在尝试使用此方法在此类之外创建变量 这给了我这个错误 问题答案: 在实例化泛型时,应将其替换为相应的对象。 例如:

  • 问题内容: 我有以下代码: 错误: 是我的EJB项目中的一个实体。为什么我收到此错误? 问题答案: 是一个接口。接口无法实例化。只能实例化具体类型。你可能想使用,这是一个 实现 了的接口。

  • 问题内容: 我创建了一个空的抽象类,并从中继承了该类: 我期望输出是 但是,我得到的是 如果我删除(这样就变成一个普通的类)和/或如果我设置了其他值,问题(显然)就消失了。 这里发生了什么? 问题答案: 这实际上不是ABC的问题,而是PyMongo的问题。有一个关于它的问题在这里。似乎pymongo重写以返回某种数据库类。这意味着将返回一个数据库对象,该对象在布尔上下文中为true。这使ABCMe