Java can';无法从父类数组的子类中获取方法

Java can';无法从父类数组的子类中获取方法,java,arrays,inheritance,Java,Arrays,Inheritance,我将父类设置为一个数组,但它不允许我通过同一个数组使用子类中的方法。它希望能够只生成一个数组,但能够使用两个类中的所有方法 public static void main (String args[]) Book[] bk = new Book[5]; class Book{ private String title; public String getTitle(){ return title;} //rest of code for class } class

我将父类设置为一个数组,但它不允许我通过同一个数组使用子类中的方法。它希望能够只生成一个数组,但能够使用两个类中的所有方法

public static void main (String args[])
Book[] bk = new Book[5];

class Book{

    private String title;

    public String getTitle(){
    return title;}
//rest of code for class
}

class EBook extends Book {

    private String website;

    public EBook (String title, String website)//more the just these two but you get the idea
    {
        super(title);
        setWebsite(website);}

    public String getWebsite (){
        return website;}
//rest of code for class
}

现在,每当我在main方法中键入类似bk.getWebsite的内容时,Eclipse都会给我一个错误。它说我必须首先在Book类中创建方法。除了创建另一个数组之外,我还能做些什么来解决这个问题吗?或者这是唯一的选择吗?

这本书没有带元素字符串的构造函数。

为了调用特定于子类的方法,您需要添加强制转换:

if (bk[i] instanceof EBook) {
    String website=((EBook)bk[i]).getWebsite();
}

请注意,像这样检查类型是次优的。人们应该更喜欢将方法放在基类中,并从子类调用重写,或者使用双重分派(例如,通过访问者模式)。

您尝试调用Book.getWebsite(),在其中调用EBook.getWebsite()。为此,您必须先将其转换为电子书。

您收到一个错误,可能是因为父图书类中未定义getWebsite()方法

如果您希望父方能够调用子方法,那么如果可能的话,可以考虑将BooC类作为抽象类并定义GETWebSITE()抽象方法,并在eBooad中实现GETWeb站点方法。p> 现在,当您有一个带有电子书实现的Book实例时,您将能够通过Book实例调用在Ebook类中实现的getWebsite方法


您可以在此处找到有关抽象方法和类的更多信息

它给您带来了什么错误?我至少能看到四种(所有语法)。你是否在问,当你创建了一个类型为
的数组时,为什么不能使用
电子书
中的方法?