在超类中创建子类的实例

时间:2021-07-31 18:16:36

标签: java polymorphism subclass superclass

每当我创建超类的实例时,我都希望它自动创建子类的一个实例。然后我可以从超类的实例访问子类。

这里我有一个超类名称“SortArticles”:

public class SortArticles {
    private String title;
    private String linkToFullArticles;
    private FullArticle fullArticleObject;
    
    public String getTitle() {
        return this.title;
    }
    
    public FullArticle getFullArticleObject() {
        return this.fullArticleObject;
    } 
}

这里我有一个子类名称“FullArticle”:

public class FullArticle extends SortArticles {
    
    private List<Label> labelList;

}

我想这样打电话:

ArrayList<SortArticles> sortList = new ArrayList<>();
sortList.add(new SortArticles());
sortList.get(0).getFullArticleObject().getTitle;

可以这样做吗?我想使用HashMap来链接sort和full,但我需要创建2个arraylist,并手动链接。

1 个答案:

答案 0 :(得分:3)

你误解了继承的概念。

你可以说,那只狗是一种动物,但你不知道,一般来说,这种动物肯定会吠叫。

获得父母属性的是孩子,反之亦然。当您实例化某个 SuperClass 时,它不会与其子类成员一起实例化,而且它应该永远

例如,如果您实例化 java.lang.Object,它永远不会(并且永远不会)拥有您的(假设)Employee 类的任何成员;但是,您的 Employee 将始终继承其所有父级的所有非私有成员。

此外,假设您有一百个类扩展了一个 SuperClass。您是否希望(或者您希望,毕竟)您的 SuperClass 实例包含从它派生的所有一百个类的所有非私有成员? java.lang.Object 的实例是否应包含类路径上可用的所有非私有基础结构?

不,这很糟糕,那是错误的,这不合逻辑。