创建继承对象数组

Posted

技术标签:

【中文标题】创建继承对象数组【英文标题】:Creating an array of inherited objects 【发布时间】:2015-02-01 11:32:17 【问题描述】:

我正在尝试创建一个将某个对象添加到继承对象数组中的方法。

public class Biblio 
Biblio[] Tab; static int i=0;
Biblio();
void insert(Biblio O)Tab[i]=O;i++;     

在主类中,我创建了 3 个相互扩展的类对象:表示 Document 从 Biblio 扩展,Article 从 Document 扩展,Book 从 Article 扩展。

public class TestBiblio 
public static void main(String[] args) 
    Document A= new Document();
    Article B= new Article();
    Book C= new Book();
    Biblio D= new Biblio();
    D.insert(A);
    D.insert(B);
    D.insert(C);

运行代码后,我在线程“main”java.lang.NullPointerException 错误中遇到异常。 我是java的初学者,我找不到帽子错了..

【问题讨论】:

你应该这样做: Biblio[] Tab = new Biblio[specify_count];而你的构造函数没有主体 你能发布完整的堆栈跟踪吗?所有类都在同一个包/文件夹中吗? 是的,它有效,我必须添加 Tab = new Biblio[5];在构造函数中。 【参考方案1】:

您从未初始化用于插入的数组。当您执行 Tab[i] 时,您正在取消引用一个空指针。 有类似的东西

    public class Biblio 
           Biblio[] Tab; 
           static int i=0;
           public Biblio() 
                  Tab = new Biblio[5];
           
          void insert(Biblio O)
                 Tab[i]=O;i++;
           
           

【讨论】:

以上是关于创建继承对象数组的主要内容,如果未能解决你的问题,请参考以下文章

指向对象和继承对象的指针数组

如何在 C++ 中构建一个对象数组,这些对象都继承自一个主类?

数组和对象都有哪些原生方法?

ES6对象的新增方法

对象和数组

请问java不同类的对象怎么放在同一个数组,然后如何对这个数组进行遍历